Browse Source

Model Changes.

v1.2.2
Abhishek Banthia 9 years ago
parent
commit
cde90685fb
  1. 54
      Clocker/PanelController.m

54
Clocker/PanelController.m

@ -303,6 +303,8 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
CLTimezoneCellView *cell = [tableView makeViewWithIdentifier:CLTimezoneCellViewIdentifier owner:self]; CLTimezoneCellView *cell = [tableView makeViewWithIdentifier:CLTimezoneCellViewIdentifier owner:self];
CLTimezoneData *dataObject = self.defaultPreferences[row];
NSTextView *customLabel = (NSTextView*)[cell.relativeDate.window fieldEditor:YES NSTextView *customLabel = (NSTextView*)[cell.relativeDate.window fieldEditor:YES
forObject:cell.relativeDate]; forObject:cell.relativeDate];
@ -328,12 +330,16 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
cell.relativeDate.stringValue = [self getDateForTimeZone:self.defaultPreferences[row]]; cell.relativeDate.stringValue = [self getDateForTimeZone:self.defaultPreferences[row]];
cell.time.stringValue = [self getTimeForTimeZone:dataObject.timezoneID];
cell.rowNumber = row; cell.rowNumber = row;
cell.customName.stringValue = [self formatStringShouldContainCity:YES cell.customName.stringValue = [self formatStringShouldContainCity:YES
withTimezoneName:dataObject];
NSNumber *displaySuntimings = [[NSUserDefaults standardUserDefaults] objectForKey:CLDisplaySunTimingKey]; NSNumber *displaySuntimings = [[NSUserDefaults standardUserDefaults] objectForKey:CLDisplaySunTimingKey];
if ([displaySuntimings isEqualToNumber:[NSNumber numberWithInteger:0]] && dataObject.sunriseTime && dataObject.sunsetTime) {
cell.sunTime.stringValue = [self getFormattedSunriseOrSunsetTime:dataObject andSunImage:cell];
} }
else else
{ {
@ -364,16 +370,23 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
#pragma mark Datasource formatting #pragma mark Datasource formatting
#pragma mark - #pragma mark -
- (NSString *)formatStringShouldContainCity:(BOOL)value withTimezoneName:(CLTimezoneData *)dataObject
{ {
if (dataObject.customLabel) {
NSString *customLabel = dataObject.customLabel;
if (customLabel.length > 0) if (customLabel.length > 0)
{ {
return customLabel; return customLabel;
} }
} }
if ([dataObject.formattedAddress length] > 0)
{ {
return dataObject.formattedAddress;
} }
else if (dataObject.timezoneID.length > 0)
{ {
NSString *timezoneID = dataObject.timezoneID;
NSRange range = [timezoneID rangeOfString:@"/"]; NSRange range = [timezoneID rangeOfString:@"/"];
if (range.location != NSNotFound) if (range.location != NSNotFound)
@ -389,18 +402,22 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
} }
- (NSString *)getFormattedSunriseOrSunsetTime:(CLTimezoneData *)dataObject
andSunImage:(CLTimezoneCellView *)cell andSunImage:(CLTimezoneCellView *)cell
{ {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm"; formatter.dateFormat = @"yyyy-MM-dd HH:mm";
NSDate *sunTime = [formatter dateFromString:dataObject.sunriseTime];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:dataObject.timezoneID];
dateFormatter.dateStyle = kCFDateFormatterShortStyle; dateFormatter.dateStyle = kCFDateFormatterShortStyle;
dateFormatter.timeStyle = kCFDateFormatterShortStyle; dateFormatter.timeStyle = kCFDateFormatterShortStyle;
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm"; dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm";
NSString *newDate = [dateFormatter stringFromDate:[NSDate date]]; NSString *newDate = [dateFormatter stringFromDate:[NSDate date]];
NSDateFormatter *dateConversion = [[NSDateFormatter alloc] init]; NSDateFormatter *dateConversion = [[NSDateFormatter alloc] init];
dateConversion.timeZone = [NSTimeZone timeZoneWithName:dataObject.timezoneID];
dateConversion.dateStyle = kCFDateFormatterShortStyle; dateConversion.dateStyle = kCFDateFormatterShortStyle;
dateConversion.timeStyle = kCFDateFormatterShortStyle; dateConversion.timeStyle = kCFDateFormatterShortStyle;
dateConversion.dateFormat = @"yyyy-MM-dd HH:mm"; dateConversion.dateFormat = @"yyyy-MM-dd HH:mm";
@ -411,11 +428,13 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
{ {
cell.sunImage.image = theme.length > 0 && [theme isEqualToString:@"Default"] ? cell.sunImage.image = theme.length > 0 && [theme isEqualToString:@"Default"] ?
[NSImage imageNamed:@"Sunrise"] : [NSImage imageNamed:@"White Sunrise"]; [NSImage imageNamed:@"Sunrise"] : [NSImage imageNamed:@"White Sunrise"];
return [dataObject.sunriseTime substringFromIndex:11];
} }
else else
{ {
cell.sunImage.image = theme.length > 0 && [theme isEqualToString:@"Default"] ? cell.sunImage.image = theme.length > 0 && [theme isEqualToString:@"Default"] ?
[NSImage imageNamed:@"Sunset"] : [NSImage imageNamed:@"White Sunset"]; [NSImage imageNamed:@"Sunset"] : [NSImage imageNamed:@"White Sunset"];
return [dataObject.sunsetTime substringFromIndex:11];
} }
} }
@ -452,6 +471,7 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
} }
- (NSString *)compareSystemDate:(NSString *)systemDate toTimezoneDate:(NSString *)date andDataObject:(CLTimezoneData *)dataObject
{ {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = [NSDateFormatter dateFormatFromTemplate:@"MM/dd/yyyy" formatter.dateFormat = [NSDateFormatter dateFormatFromTemplate:@"MM/dd/yyyy"
@ -471,6 +491,7 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSInteger weekday = [calendar component:NSCalendarUnitWeekday fromDate:localDate]; NSInteger weekday = [calendar component:NSCalendarUnitWeekday fromDate:localDate];
if ([dataObject.nextUpdate isKindOfClass:[NSString class]])
{ {
NSUInteger units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; NSUInteger units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
@ -478,10 +499,18 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
comps.day = comps.day + 1; comps.day = comps.day + 1;
NSDate *tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps]; NSDate *tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps];
CLTimezoneData *newDataObject = [dataObject mutableCopy];
newDataObject.nextUpdate = tomorrowMidnight;
[self.defaultPreferences replaceObjectAtIndex:[self.defaultPreferences indexOfObject:dataObject] withObject:newDataObject];
[[NSUserDefaults standardUserDefaults] setObject:self.defaultPreferences forKey:CLDefaultPreferenceKey]; [[NSUserDefaults standardUserDefaults] setObject:self.defaultPreferences forKey:CLDefaultPreferenceKey];
} }
else if ([dataObject.nextUpdate isKindOfClass:[NSDate class]] &&
[dataObject.nextUpdate isEarlierThanOrEqualTo:timezoneDate])
{ {
[self getTimeZoneForLatitude:dataObject.latitude
andLongitude:dataObject.longitude
andDataObject:dataObject];
} }
NSInteger daysApart = [timezoneDate daysFrom:localDate]; NSInteger daysApart = [timezoneDate daysFrom:localDate];
@ -503,6 +532,7 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
} }
} }
- (NSString *)getDateForTimeZone:(CLTimezoneData *)dataObject
{ {
NSCalendar *currentCalendar = [NSCalendar autoupdatingCurrentCalendar]; NSCalendar *currentCalendar = [NSCalendar autoupdatingCurrentCalendar];
NSDate *newDate = [currentCalendar dateByAddingUnit:NSCalendarUnitHour NSDate *newDate = [currentCalendar dateByAddingUnit:NSCalendarUnitHour
@ -513,10 +543,12 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
dateFormatter.dateStyle = kCFDateFormatterShortStyle; dateFormatter.dateStyle = kCFDateFormatterShortStyle;
dateFormatter.timeStyle = kCFDateFormatterNoStyle; dateFormatter.timeStyle = kCFDateFormatterNoStyle;
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:dataObject.timezoneID];
NSNumber *relativeDayPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLRelativeDateKey]; NSNumber *relativeDayPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLRelativeDateKey];
if (relativeDayPreference.integerValue == 0) { if (relativeDayPreference.integerValue == 0) {
return [self compareSystemDate:[self getLocalCurrentDate] return [self compareSystemDate:[self getLocalCurrentDate]
toTimezoneDate:[dateFormatter stringFromDate:newDate] andDataObject:dataObject] ;;
} }
else else
{ {
@ -548,11 +580,16 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
{ {
if ([object isKindOfClass:[NSString class]]) if ([object isKindOfClass:[NSString class]])
{ {
CLTimezoneData *dataObject = self.defaultPreferences[row];
if ([dataObject.formattedAddress isEqualToString:object])
{ {
return; return;
} }
CLTimezoneData *mutableTimeZoneData = [dataObject mutableCopy];
mutableTimeZoneData.customLabel = object;
[self.defaultPreferences replaceObjectAtIndex:row withObject:mutableTimeZoneData];
[[NSUserDefaults standardUserDefaults] setObject:self.defaultPreferences forKey:CLDefaultPreferenceKey]; [[NSUserDefaults standardUserDefaults] setObject:self.defaultPreferences forKey:CLDefaultPreferenceKey];
[self.mainTableview reloadData]; [self.mainTableview reloadData];
} }
@ -721,6 +758,7 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
} }
} }
- (void)getTimeZoneForLatitude:(NSString *)latitude andLongitude:(NSString *)longitude andDataObject:(CLTimezoneData *)dataObject
{ {
Reachability *reachability = [Reachability reachabilityForInternetConnection]; Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus]; NetworkStatus networkStatus = [reachability currentReachabilityStatus];
@ -773,13 +811,27 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
} }
CLTimezoneData *newDataObject = [[CLTimezoneData alloc] init];
newDataObject.timezoneID = dataObject.timezoneID;
newDataObject.formattedAddress = dataObject.formattedAddress;
newDataObject.latitude = dataObject.latitude;
newDataObject.longitude = dataObject.longitude;
newDataObject.sunriseTime = dataObject.sunriseTime;
newDataObject.sunsetTime = dataObject.sunsetTime;
newDataObject.customLabel = dataObject.customLabel;
newDataObject.place_id = dataObject.place_id;
newDataObject.nextUpdate = dataObject.nextUpdate;
if (json[@"sunrise"] && json[@"sunset"]) { if (json[@"sunrise"] && json[@"sunset"]) {
newDataObject.sunriseTime = json[@"sunrise"];
newDataObject.sunsetTime = json[@"sunset"];
} }
NSUInteger units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; NSUInteger units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *comps = [[NSCalendar currentCalendar] components:units fromDate:dataObject.nextUpdate];
comps.day = comps.day + 1; comps.day = comps.day + 1;
NSDate *tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps]; NSDate *tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps];
newDataObject.nextUpdate = tomorrowMidnight;
NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey]; NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
@ -791,6 +843,8 @@ NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:defaultPreference]; NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:defaultPreference];
for (NSMutableDictionary *timeDictionary in self.defaultPreferences) { for (NSMutableDictionary *timeDictionary in self.defaultPreferences) {
if ([dataObject.place_id isEqualToString:timeDictionary[CLPlaceIdentifier]]) {
[newArray replaceObjectAtIndex:[self.defaultPreferences indexOfObject:dataObject] withObject:newDataObject];
} }
} }

Loading…
Cancel
Save