Skip to content

Commit

Permalink
Add additional class default convenience methods.
Browse files Browse the repository at this point in the history
  • Loading branch information
Thesaurus committed Jun 30, 2015
1 parent 54e2200 commit 9e34d9e
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 15 deletions.
30 changes: 30 additions & 0 deletions TFDatePicker/TFDatePicker/TFDatePicker.h
Expand Up @@ -51,6 +51,36 @@
+ (void)setDefaultReferenceDate:(NSDate *)date;
+ (NSDate *)defaultReferenceDate;

/*!
Class default reference date accessors.
- minDate defaults to this value
*/
+ (void)setDefaultMinDate:(NSDate *)defaultDate;
+ (NSDate *)defaultMinDate;

/*!
Class default reference date accessors.
- maxDate defaults to this value
*/
+ (void)setDefaultMaxDate:(NSDate *)defaultDate;
+ (NSDate *)defaultMaxDate;

/*!
Class default delegate accessors.
- delegate defaults to this value
*/
+ (void)setDefaultDelegate:(id)delegate;
+ (id)defaultDelegate;

/*!
Returns YES if no date displayed.
Expand Down
101 changes: 86 additions & 15 deletions TFDatePicker/TFDatePicker/TFDatePicker.m
Expand Up @@ -34,9 +34,9 @@ @implementation TFDatePicker


#pragma mark -
#pragma mark Localization
#pragma mark Localization defaults

static NSTimeZone *m_defaultTimeZone;
static __strong NSTimeZone *m_defaultTimeZone;

+ (void)setDefaultTimeZone:(NSTimeZone *)defaultTimeZone
{
Expand All @@ -50,7 +50,7 @@ + (NSTimeZone *)defaultTimeZone
return m_defaultTimeZone;
}

static NSCalendar *m_defaultCalendar;
static __strong NSCalendar *m_defaultCalendar;

+ (void)setDefaultCalendar:(NSCalendar *)defaultCalendar
{
Expand All @@ -64,6 +64,51 @@ + (NSCalendar *)defaultCalendar
return m_defaultCalendar;
}

#pragma mark -
#pragma mark Date range defaults

static __strong NSDate *m_defaultMinDate;

+ (void)setDefaultMinDate:(NSDate *)defaultDate
{
m_defaultMinDate = defaultDate;
}

+ (NSDate *)defaultMinDate
{
// defaults to nil
return m_defaultMinDate;
}

static __strong NSDate *m_defaultMaxDate;

+ (void)setDefaultMaxDate:(NSDate *)defaultDate
{
m_defaultMaxDate = defaultDate;
}

+ (NSDate *)defaultMaxDate
{
// defaults to nil
return m_defaultMaxDate;
}

#pragma mark -
#pragma mark Delegate default

static __strong id m_defaultDelegate;

+ (void)setDefaultDelegate:(id)delegate
{
m_defaultDelegate = delegate;
}

+ (id)defaultDelegate
{
// defaults to nil
return m_defaultDelegate;
}

#pragma mark -
#pragma mark Normalization

Expand Down Expand Up @@ -128,7 +173,7 @@ + (void)initialize
}

#pragma mark -
#pragma mark Nib loading
#pragma mark Lifecycle

- (void)awakeFromNib
{
Expand Down Expand Up @@ -157,12 +202,12 @@ - (void)awakeFromNib
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(-2)-[showPopoverButton(16)]" options:0 metrics:nil views:views]];
}

// override calendar with default
// override -calendar with default
if ([[self class] defaultCalendar]) {
self.calendar = [[self class] defaultCalendar];
}

// override timezone with default
// override- timezone with default
if ([[self class] defaultTimeZone]) {
self.timeZone = [[self class] defaultTimeZone];
}
Expand All @@ -172,8 +217,30 @@ - (void)awakeFromNib
self.dateNormalisationSelector = [[self class] defaultDateNormalisationSelector];
}

// override -minDate with default
if ([[self class] defaultMinDate]) {
self.minDate = [[self class] defaultMinDate];
}

// override -maxDate with default
if ([[self class] defaultMaxDate]) {
self.maxDate = [[self class] defaultMaxDate];
}

// override -delegate with default
if ([[self class] defaultDelegate]) {
[(NSDatePickerCell *)(self.cell) setDelegate:[[self class] defaultDelegate]];
}

// set reference date
self.referenceDate = [self.class defaultReferenceDate];

}

- (void)dealloc
{
[self removeValueBindingObservation];
self.delegate = nil;
}

#pragma mark -
Expand Down Expand Up @@ -223,9 +290,12 @@ - (void)drawRect:(NSRect)rect
#pragma mark NSDatePickerCellDelegate

- (void)datePickerCell:(NSDatePickerCell *)aDatePickerCell validateProposedDateValue:(NSDate **)proposedDateValue timeInterval:(NSTimeInterval *)proposedTimeInterval {

// forward delegate request from popover date picker cell
if (self.delegate) {
[self.delegate datePickerCell:aDatePickerCell validateProposedDateValue:proposedDateValue timeInterval:proposedTimeInterval];
}

}

#pragma mark -
Expand Down Expand Up @@ -397,6 +467,16 @@ - (NSButton *)showPopoverButton
return _showPopoverButton;
}

- (void)setObjectValue:(id)objectValue
{
[super setObjectValue:objectValue];
}

- (void)setStringValue:(NSString *)stringValue
{
[super setStringValue:stringValue];
}

#pragma mark -
#pragma mark Binding support

Expand Down Expand Up @@ -513,7 +593,6 @@ - (void)removeValueBindingObservation
#pragma mark -
#pragma mark KVO


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == &TFValueBindingContext) {
Expand Down Expand Up @@ -550,12 +629,4 @@ - (void)mouseDown:(NSEvent *)theEvent
[super mouseDown:theEvent];
}

#pragma mark -
#pragma mark KVO

- (void)dealloc
{
[self removeValueBindingObservation];
}

@end

0 comments on commit 9e34d9e

Please sign in to comment.