diff --git a/AppKit/CPDatePicker/CPDatePicker.j b/AppKit/CPDatePicker/CPDatePicker.j index d9edd9b5a..0c9b26633 100644 --- a/AppKit/CPDatePicker/CPDatePicker.j +++ b/AppKit/CPDatePicker/CPDatePicker.j @@ -135,10 +135,10 @@ CPEraDatePickerElementFlag = 0x0100; @"clock-text-shadow-color": [CPColor clearColor], @"clock-text-shadow-offset": CGSizeMakeZero(), @"clock-font": [CPNull null], - @"second-hand-color": [CPColor clearColor], - @"hour-hand-color": [CPColor clearColor], - @"middle-hand-color": [CPColor clearColor], - @"minute-hand-color": [CPColor clearColor], + @"second-hand-image": [CPNull null], + @"hour-hand-image": [CPNull null], + @"middle-hand-image": [CPNull null], + @"minute-hand-image": [CPNull null], @"size-clock": CGSizeMakeZero(), @"second-hand-size": CGSizeMakeZero(), @"hour-hand-size": CGSizeMakeZero(), diff --git a/AppKit/CPDatePicker/_CPDatePickerCalendar.j b/AppKit/CPDatePicker/_CPDatePickerCalendar.j index 17818ebb0..474d29665 100644 --- a/AppKit/CPDatePicker/_CPDatePickerCalendar.j +++ b/AppKit/CPDatePicker/_CPDatePickerCalendar.j @@ -445,6 +445,9 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" */ - (void)layoutSubviews { + if ([_datePicker datePickerStyle] == CPTextFieldAndStepperDatePickerStyle || [_datePicker datePickerStyle] == CPTextFieldDatePickerStyle) + return; + var bounds = [self bounds], dayNames = [self _dayNames], width = CGRectGetWidth(bounds), @@ -753,6 +756,9 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" */ - (void)layoutSubviews { + if ([_datePicker datePickerStyle] == CPTextFieldAndStepperDatePickerStyle || [_datePicker datePickerStyle] == CPTextFieldDatePickerStyle) + return; + [super layoutSubviews]; [self tile]; @@ -1133,6 +1139,9 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" */ - (void)layoutSubviews { + if ([_datePicker datePickerStyle] == CPTextFieldAndStepperDatePickerStyle || [_datePicker datePickerStyle] == CPTextFieldDatePickerStyle) + return; + var bounds = [self bounds]; [_textField sizeToFit]; [_textField setFrameOrigin:CGPointMake(bounds.size.width / 2 - [_textField frameSize].width / 2 + [_datePicker valueForThemeAttribute:@"border-width"], bounds.size.height / 2 - [_textField frameSize].height / 2)]; @@ -1205,6 +1214,9 @@ var CPShortWeekDayNameArrayEn = [@"Mo", @"Tu", @"We", @"Th", @"Fr", @"Sa", @"Su" - (void)layoutSubviews { + if ([_datePicker datePickerStyle] == CPTextFieldAndStepperDatePickerStyle || [_datePicker datePickerStyle] == CPTextFieldDatePickerStyle) + return; + if ([_datePicker drawsBackground]) [self setBackgroundColor:[_datePicker backgroundColor]]; else diff --git a/AppKit/CPDatePicker/_CPDatePickerClock.j b/AppKit/CPDatePicker/_CPDatePickerClock.j index fdcffcab9..675c19c08 100644 --- a/AppKit/CPDatePicker/_CPDatePickerClock.j +++ b/AppKit/CPDatePicker/_CPDatePickerClock.j @@ -27,6 +27,8 @@ @class CPDatePicker @global CPHourMinuteSecondDatePickerElementFlag +@global CPTextFieldAndStepperDatePickerStyle +@global CPTextFieldDatePickerStyle @implementation _CPDatePickerClock : CPView { @@ -123,6 +125,9 @@ */ - (void)layoutSubviews { + if ([_datePicker datePickerStyle] == CPTextFieldAndStepperDatePickerStyle || [_datePicker datePickerStyle] == CPTextFieldDatePickerStyle) + return; + [super layoutSubviews]; var bounds = [self bounds], @@ -131,10 +136,10 @@ [dateValue _dateWithTimeZone:[_datePicker timeZone]]; [self setBackgroundColor:[_datePicker valueForThemeAttribute:@"bezel-color-clock" inState:[_datePicker themeState]]]; - [_middleHandLayer setBackgroundHandColor:[_datePicker valueForThemeAttribute:@"middle-hand-color" inState:[_datePicker themeState]]]; - [_hourHandLayer setBackgroundHandColor:[_datePicker valueForThemeAttribute:@"hour-hand-color" inState:[_datePicker themeState]]]; - [_minuteHandLayer setBackgroundHandColor:[_datePicker valueForThemeAttribute:@"minute-hand-color" inState:[_datePicker themeState]]]; - [_secondHandLayer setBackgroundHandColor:[_datePicker valueForThemeAttribute:@"second-hand-color" inState:[_datePicker themeState]]]; + [_middleHandLayer setImage:[_datePicker valueForThemeAttribute:@"middle-hand-image" inState:[_datePicker themeState]]]; + [_hourHandLayer setImage:[_datePicker valueForThemeAttribute:@"hour-hand-image" inState:[_datePicker themeState]]]; + [_minuteHandLayer setImage:[_datePicker valueForThemeAttribute:@"minute-hand-image" inState:[_datePicker themeState]]]; + [_secondHandLayer setImage:[_datePicker valueForThemeAttribute:@"second-hand-image" inState:[_datePicker themeState]]]; if ([_datePicker _isEnglishFormat]) { @@ -156,6 +161,12 @@ [_minuteHandLayer setRotationRadians:[self _minutePositionRadianForDate:dateValue]]; [_secondHandLayer setRotationRadians:[self _secondPositionRadianForDate:dateValue]]; + [_PMAMTextField setEnabled:_isEnabled]; + [_hourHandLayer setEnabled:_isEnabled]; + [_middleHandLayer setEnabled:_isEnabled]; + [_secondHandLayer setEnabled:_isEnabled]; + [_minuteHandLayer setEnabled:_isEnabled]; + // Check if we have to display the hand second if (([_datePicker datePickerElements] & CPHourMinuteSecondDatePickerElementFlag) == CPHourMinuteSecondDatePickerElementFlag) [_secondHandLayer setHidden:NO]; @@ -200,12 +211,6 @@ - (void)setEnabled:(BOOL)aBoolean { _isEnabled = aBoolean; - [_PMAMTextField setEnabled:aBoolean]; - [_hourHandLayer setEnabled:aBoolean]; - [_middleHandLayer setEnabled:aBoolean]; - [_secondHandLayer setEnabled:aBoolean]; - [_minuteHandLayer setEnabled:aBoolean]; - [self setNeedsLayout]; } @@ -216,6 +221,7 @@ { BOOL _isEnabled @accessors(setter=setEnabled:, getter=isEnabled); + CPImage _image; CALayer _imageLayer; float _rotationRadians; } @@ -258,6 +264,16 @@ [_imageLayer setPosition:CGPointMake(CGRectGetMidX(aRect), CGRectGetMidY(aRect))]; } +- (void)setImage:(CPImage)anImage +{ + if (_image == anImage) + return; + + _image = anImage; + + [_imageLayer setNeedsDisplay]; +} + /*! Set the rotation of the imageLayer @param radians */ @@ -273,15 +289,26 @@ 1.0, 1.0)]; } -- (void)setBackgroundHandColor:(CPColor)aColor -{ - [_imageLayer setBackgroundColor:aColor]; -} - - (void)setEnabled:(BOOL)aBoolean { _isEnabled = aBoolean; [self setNeedsDisplay]; + [_imageLayer setNeedsDisplay]; +} + +- (void)imageDidLoad:(CPImage)anImage +{ + [_imageLayer setNeedsDisplay]; +} + +- (void)drawLayer:(CALayer)aLayer inContext:(CGContext)aContext +{ + var bounds = [aLayer bounds]; + + if ([_image loadStatus] != CPImageLoadStatusCompleted) + [_image setDelegate:self]; + else + CGContextDrawImage(aContext, bounds, _image); } @end diff --git a/AppKit/CPDatePicker/_CPDatePickerTextField.j b/AppKit/CPDatePicker/_CPDatePickerTextField.j index a1ebf5220..897dc14d0 100644 --- a/AppKit/CPDatePicker/_CPDatePickerTextField.j +++ b/AppKit/CPDatePicker/_CPDatePickerTextField.j @@ -676,6 +676,9 @@ var CPZeroKeyCode = 48, - (void)layoutSubviews { + if ([_datePicker datePickerStyle] == CPClockAndCalendarDatePickerStyle) + return; + [super layoutSubviews]; var themeState = [_datePicker themeState]; diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index e78bc9667..27455c9c2 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1097,7 +1097,7 @@ var themedButtonValues = nil, + (CPDatePicker)themedDatePicker { - var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40,140,300,29)], + var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40.0, 40.0, 170.0, 29.0)], bezelColor = PatternColor( [ @@ -1166,6 +1166,7 @@ var themedButtonValues = nil, [@"max-size", CGSizeMake(-1.0, 29.0)] ]; + [datePicker setDatePickerStyle:CPTextFieldDatePickerStyle]; [self registerThemeValues:themeValues forView:datePicker]; return datePicker; @@ -1173,7 +1174,7 @@ var themedButtonValues = nil, + (CPDatePicker)themedDatePickerCalendar { - var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40,140,300,29)], + var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40.0, 140.0, 276.0, 148.0)], arrowImageLeft = PatternImage("datepicker-calendar-arrow-left.png", 7.0, 10.0), arrowImageRight = PatternImage("datepicker-calendar-arrow-right.png", 7.0, 10.0), @@ -1183,16 +1184,16 @@ var themedButtonValues = nil, arrowImageRightHighlighted = PatternImage("datepicker-calendar-arrow-right-highlighted.png", 7.0, 10.0), circleImageHighlighted = PatternImage("datepicker-circle-image-highlighted.png", 9.0, 10.0), - secondHandColor = PatternColor("datepicker-clock-second-hand.png", 89.0, 89.0), - minuteHandColor = PatternColor("datepicker-clock-minute-hand.png", 85.0, 85.0), - hourHandColor = PatternColor("datepicker-clock-hour-hand.png", 47.0, 47.0), - middleHandColor = PatternColor("datepicker-clock-middle-hand.png", 13.0, 13.0), + secondHandImage = CPImageInBundle(@"datepicker-clock-second-hand.png", CGSizeMake(89, 89)), + minuteHandImage = CPImageInBundle(@"datepicker-clock-minute-hand.png", CGSizeMake(85, 85)), + hourHandImage = CPImageInBundle(@"datepicker-clock-hour-hand.png", CGSizeMake(47, 47)), + middleHandImage = CPImageInBundle(@"datepicker-clock-middle-hand.png", CGSizeMake(13, 13)), clockImageColor = PatternColor("datepicker-clock.png", 122.0, 123.0), - secondHandColorDisabled = PatternColor("datepicker-clock-second-hand-disabled.png", 89.0, 89.0), - minuteHandColorDisabled = PatternColor("datepicker-clock-minute-hand-disabled.png", 85.0, 85.0), - hourHandColorDisabled = PatternColor("datepicker-clock-hour-hand-disabled.png", 47.0, 47.0), - middleHandColorDisabled = PatternColor("datepicker-clock-middle-hand-disabled.png", 13.0, 13.0), + secondHandImageDisabled = CPImageInBundle(@"datepicker-clock-second-hand-disabled.png", CGSizeMake(89, 89)), + minuteHandImageDisabled = CPImageInBundle(@"datepicker-clock-minute-hand-disabled.png", CGSizeMake(85, 85)), + hourHandImageDisabled = CPImageInBundle(@"datepicker-clock-hour-hand-disabled.png", CGSizeMake(47, 47)), + middleHandImageDisabled = CPImageInBundle(@"datepicker-clock-middle-hand-disabled.png", CGSizeMake(13, 13)), clockImageColorDisabled = PatternColor("datepicker-clock-disabled.png", 122.0, 123.0), themeValues = @@ -1286,15 +1287,15 @@ var themedButtonValues = nil, [@"circle-image-highlighted", circleImageHighlighted], [@"arrow-inset", CGInsetMake(9.0, 4.0, 0.0, 0.0)], - [@"second-hand-color", secondHandColor], - [@"hour-hand-color", hourHandColor], - [@"middle-hand-color", middleHandColor], - [@"minute-hand-color", minuteHandColor], + [@"second-hand-image", secondHandImage], + [@"hour-hand-image", hourHandImage], + [@"middle-hand-image", middleHandImage], + [@"minute-hand-image", minuteHandImage], - [@"second-hand-color", secondHandColorDisabled, CPThemeStateDisabled], - [@"hour-hand-color", hourHandColorDisabled, CPThemeStateDisabled], - [@"middle-hand-color", middleHandColorDisabled, CPThemeStateDisabled], - [@"minute-hand-color", minuteHandColorDisabled, CPThemeStateDisabled], + [@"second-hand-image", secondHandImageDisabled, CPThemeStateDisabled], + [@"hour-hand-image", hourHandImageDisabled, CPThemeStateDisabled], + [@"middle-hand-image", middleHandImageDisabled, CPThemeStateDisabled], + [@"minute-hand-image", minuteHandImageDisabled, CPThemeStateDisabled], [@"second-hand-size", CGSizeMake(89.0, 89.0)], [@"hour-hand-size", CGSizeMake(47.0, 47.0)], @@ -1312,6 +1313,7 @@ var themedButtonValues = nil, ]; [datePicker setDatePickerStyle:CPClockAndCalendarDatePickerStyle]; + [datePicker setBackgroundColor:[CPColor whiteColor]]; [self registerThemeValues:themeValues forView:datePicker]; return datePicker; diff --git a/AppKit/Themes/Aristo2/ThemeDescriptors.j b/AppKit/Themes/Aristo2/ThemeDescriptors.j index 6de038399..9162296e1 100644 --- a/AppKit/Themes/Aristo2/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo2/ThemeDescriptors.j @@ -667,7 +667,7 @@ var themedButtonValues = nil, + (CPDatePicker)themedDatePicker { - var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40,140,300,29)], + var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40.0 ,40.0 ,170.0 ,29.0)], bezelColor = PatternColor( "textfield-bezel-square{state}{position}.png", @@ -719,6 +719,7 @@ var themedButtonValues = nil, [@"max-size", CGSizeMake(-1.0, 29.0)] ]; + [datePicker setDatePickerStyle:CPTextFieldDatePickerStyle]; [self registerThemeValues:themeValues forView:datePicker]; return datePicker; @@ -726,7 +727,7 @@ var themedButtonValues = nil, + (CPDatePicker)themedDatePickerCalendar { - var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40,140,300,29)], + var datePicker = [[CPDatePicker alloc] initWithFrame:CGRectMake(40.0, 140.0, 276.0 ,148.0)], arrowImageLeft = PatternImage("datepicker-calendar-arrow-left.png", 7.0, 10.0), arrowImageRight = PatternImage("datepicker-calendar-arrow-right.png", 7.0, 10.0), @@ -736,16 +737,16 @@ var themedButtonValues = nil, arrowImageRightHighlighted = PatternImage("datepicker-calendar-arrow-right-highlighted.png", 7.0, 10.0), circleImageHighlighted = PatternImage("datepicker-circle-image-highlighted.png", 9.0, 10.0), - secondHandColor = PatternColor("datepicker-clock-second-hand.png", 89.0, 89.0), - minuteHandColor = PatternColor("datepicker-clock-minute-hand.png", 85.0, 85.0), - hourHandColor = PatternColor("datepicker-clock-hour-hand.png", 47.0, 47.0), - middleHandColor = PatternColor("datepicker-clock-middle-hand.png", 13.0, 13.0), + secondHandImage = CPImageInBundle(@"datepicker-clock-second-hand.png", CGSizeMake(89, 89)), + minuteHandImage = CPImageInBundle(@"datepicker-clock-minute-hand.png", CGSizeMake(85, 85)), + hourHandImage = CPImageInBundle(@"datepicker-clock-hour-hand.png", CGSizeMake(47, 47)), + middleHandImage = CPImageInBundle(@"datepicker-clock-middle-hand.png", CGSizeMake(13, 13)), clockImageColor = PatternColor("datepicker-clock.png", 122.0, 123.0), - secondHandColorDisabled = PatternColor("datepicker-clock-second-hand-disabled.png", 89.0, 89.0), - minuteHandColorDisabled = PatternColor("datepicker-clock-minute-hand-disabled.png", 85.0, 85.0), - hourHandColorDisabled = PatternColor("datepicker-clock-hour-hand-disabled.png", 47.0, 47.0), - middleHandColorDisabled = PatternColor("datepicker-clock-middle-hand-disabled.png", 13.0, 13.0), + secondHandImageDisabled = CPImageInBundle(@"datepicker-clock-second-hand-disabled.png", CGSizeMake(89, 89)), + minuteHandImageDisabled = CPImageInBundle(@"datepicker-clock-minute-hand-disabled.png", CGSizeMake(85, 85)), + hourHandImageDisabled = CPImageInBundle(@"datepicker-clock-hour-hand-disabled.png", CGSizeMake(47, 47)), + middleHandImageDisabled = CPImageInBundle(@"datepicker-clock-middle-hand-disabled.png", CGSizeMake(13, 13)), clockImageColorDisabled = PatternColor("datepicker-clock-disabled.png", 122.0, 123.0), themeValues = @@ -839,15 +840,15 @@ var themedButtonValues = nil, [@"circle-image-highlighted", circleImageHighlighted], [@"arrow-inset", CGInsetMake(9.0, 4.0, 0.0, 0.0)], - [@"second-hand-color", secondHandColor], - [@"hour-hand-color", hourHandColor], - [@"middle-hand-color", middleHandColor], - [@"minute-hand-color", minuteHandColor], + [@"second-hand-image", secondHandImage], + [@"hour-hand-image", hourHandImage], + [@"middle-hand-image", middleHandImage], + [@"minute-hand-image", minuteHandImage], - [@"second-hand-color", secondHandColorDisabled, CPThemeStateDisabled], - [@"hour-hand-color", hourHandColorDisabled, CPThemeStateDisabled], - [@"middle-hand-color", middleHandColorDisabled, CPThemeStateDisabled], - [@"minute-hand-color", minuteHandColorDisabled, CPThemeStateDisabled], + [@"second-hand-image", secondHandImageDisabled, CPThemeStateDisabled], + [@"hour-hand-image", hourHandImageDisabled, CPThemeStateDisabled], + [@"middle-hand-image", middleHandImageDisabled, CPThemeStateDisabled], + [@"minute-hand-image", minuteHandImageDisabled, CPThemeStateDisabled], [@"second-hand-size", CGSizeMake(89.0, 89.0)], [@"hour-hand-size", CGSizeMake(47.0, 47.0)], @@ -864,6 +865,7 @@ var themedButtonValues = nil, ]; [datePicker setDatePickerStyle:CPClockAndCalendarDatePickerStyle]; + [datePicker setBackgroundColor:[CPColor whiteColor]]; [self registerThemeValues:themeValues forView:datePicker]; return datePicker;