Skip to content

Commit

Permalink
Calendar now supports mondays as the first and handles timezones bett…
Browse files Browse the repository at this point in the history
…er. TKViewController bug fix. Renamed ODCalendarDayEvent to have TK prefix. Telvision empty view image.
  • Loading branch information
devinross committed Dec 2, 2010
1 parent 4707294 commit f4803bf
Show file tree
Hide file tree
Showing 28 changed files with 859 additions and 470 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 24 additions & 24 deletions src/TapkuLibrary.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@
3B6EDDEF11547C2900E454DA /* TKCalendarMonthTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B879FC4109BFC07002012FD /* TKCalendarMonthTableViewController.h */; };
3B6EDDF011547C2A00E454DA /* TapDetectingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0810953E2400F235F1 /* TapDetectingView.m */; };
3B6EDDF111547C2B00E454DA /* TapDetectingView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0710953E2400F235F1 /* TapDetectingView.h */; };
3B6EDDF211547C2C00E454DA /* ODCalendarDayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0610953E2400F235F1 /* ODCalendarDayViewController.m */; };
3B6EDDF311547C2C00E454DA /* ODCalendarDayViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0510953E2400F235F1 /* ODCalendarDayViewController.h */; };
3B6EDDF411547C2D00E454DA /* ODCalendarDayTimelineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0410953E2400F235F1 /* ODCalendarDayTimelineView.m */; };
3B6EDDF511547C3000E454DA /* ODCalendarDayTimelineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0310953E2400F235F1 /* ODCalendarDayTimelineView.h */; };
3B6EDDF611547C3000E454DA /* ODCalendarDayEventView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0210953E2400F235F1 /* ODCalendarDayEventView.m */; };
3B6EDDF711547C3100E454DA /* ODCalendarDayEventView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0110953E2400F235F1 /* ODCalendarDayEventView.h */; };
3B6EDDF211547C2C00E454DA /* TKCalendarDayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0610953E2400F235F1 /* TKCalendarDayViewController.m */; };
3B6EDDF311547C2C00E454DA /* TKCalendarDayViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0510953E2400F235F1 /* TKCalendarDayViewController.h */; };
3B6EDDF411547C2D00E454DA /* TKCalendarDayTimelineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0410953E2400F235F1 /* TKCalendarDayTimelineView.m */; };
3B6EDDF511547C3000E454DA /* TKCalendarDayTimelineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0310953E2400F235F1 /* TKCalendarDayTimelineView.h */; };
3B6EDDF611547C3000E454DA /* TKCalendarDayEventView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BAC9A0210953E2400F235F1 /* TKCalendarDayEventView.m */; };
3B6EDDF711547C3100E454DA /* TKCalendarDayEventView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A0110953E2400F235F1 /* TKCalendarDayEventView.h */; };
3B6EDDF811547C3300E454DA /* TKGraphView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B3991EF10CED8FD00B8FF4F /* TKGraphView.m */; };
3B6EDDF911547C3400E454DA /* TKGraphView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B3991EE10CED8FD00B8FF4F /* TKGraphView.h */; };
3B6EDDFA11547C3400E454DA /* TKGraphController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAC9A5310953E5200F235F1 /* TKGraphController.h */; };
Expand Down Expand Up @@ -145,12 +145,12 @@
3BAC995910953DF400F235F1 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; };
3BAC99FE10953E2400F235F1 /* TKCalendarMonthViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TKCalendarMonthViewController.h; sourceTree = "<group>"; };
3BAC99FF10953E2400F235F1 /* TKCalendarMonthViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TKCalendarMonthViewController.m; sourceTree = "<group>"; };
3BAC9A0110953E2400F235F1 /* ODCalendarDayEventView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODCalendarDayEventView.h; sourceTree = "<group>"; };
3BAC9A0210953E2400F235F1 /* ODCalendarDayEventView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ODCalendarDayEventView.m; sourceTree = "<group>"; };
3BAC9A0310953E2400F235F1 /* ODCalendarDayTimelineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODCalendarDayTimelineView.h; sourceTree = "<group>"; };
3BAC9A0410953E2400F235F1 /* ODCalendarDayTimelineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ODCalendarDayTimelineView.m; sourceTree = "<group>"; };
3BAC9A0510953E2400F235F1 /* ODCalendarDayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODCalendarDayViewController.h; sourceTree = "<group>"; };
3BAC9A0610953E2400F235F1 /* ODCalendarDayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ODCalendarDayViewController.m; sourceTree = "<group>"; };
3BAC9A0110953E2400F235F1 /* TKCalendarDayEventView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TKCalendarDayEventView.h; sourceTree = "<group>"; };
3BAC9A0210953E2400F235F1 /* TKCalendarDayEventView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TKCalendarDayEventView.m; sourceTree = "<group>"; };
3BAC9A0310953E2400F235F1 /* TKCalendarDayTimelineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TKCalendarDayTimelineView.h; sourceTree = "<group>"; };
3BAC9A0410953E2400F235F1 /* TKCalendarDayTimelineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TKCalendarDayTimelineView.m; sourceTree = "<group>"; };
3BAC9A0510953E2400F235F1 /* TKCalendarDayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TKCalendarDayViewController.h; sourceTree = "<group>"; };
3BAC9A0610953E2400F235F1 /* TKCalendarDayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TKCalendarDayViewController.m; sourceTree = "<group>"; };
3BAC9A0710953E2400F235F1 /* TapDetectingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TapDetectingView.h; sourceTree = "<group>"; };
3BAC9A0810953E2400F235F1 /* TapDetectingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TapDetectingView.m; sourceTree = "<group>"; };
3BAC9A1B10953E5200F235F1 /* TapkuLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TapkuLibrary.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -343,12 +343,12 @@
3BAC9A0010953E2400F235F1 /* Day */ = {
isa = PBXGroup;
children = (
3BAC9A0110953E2400F235F1 /* ODCalendarDayEventView.h */,
3BAC9A0210953E2400F235F1 /* ODCalendarDayEventView.m */,
3BAC9A0310953E2400F235F1 /* ODCalendarDayTimelineView.h */,
3BAC9A0410953E2400F235F1 /* ODCalendarDayTimelineView.m */,
3BAC9A0510953E2400F235F1 /* ODCalendarDayViewController.h */,
3BAC9A0610953E2400F235F1 /* ODCalendarDayViewController.m */,
3BAC9A0510953E2400F235F1 /* TKCalendarDayViewController.h */,
3BAC9A0610953E2400F235F1 /* TKCalendarDayViewController.m */,
3BAC9A0110953E2400F235F1 /* TKCalendarDayEventView.h */,
3BAC9A0210953E2400F235F1 /* TKCalendarDayEventView.m */,
3BAC9A0310953E2400F235F1 /* TKCalendarDayTimelineView.h */,
3BAC9A0410953E2400F235F1 /* TKCalendarDayTimelineView.m */,
3BAC9A0710953E2400F235F1 /* TapDetectingView.h */,
3BAC9A0810953E2400F235F1 /* TapDetectingView.m */,
);
Expand Down Expand Up @@ -622,9 +622,9 @@
3B6EDDEB11547C2800E454DA /* TKCalendarMonthViewController.h in Headers */,
3B6EDDEF11547C2900E454DA /* TKCalendarMonthTableViewController.h in Headers */,
3B6EDDF111547C2B00E454DA /* TapDetectingView.h in Headers */,
3B6EDDF311547C2C00E454DA /* ODCalendarDayViewController.h in Headers */,
3B6EDDF511547C3000E454DA /* ODCalendarDayTimelineView.h in Headers */,
3B6EDDF711547C3100E454DA /* ODCalendarDayEventView.h in Headers */,
3B6EDDF311547C2C00E454DA /* TKCalendarDayViewController.h in Headers */,
3B6EDDF511547C3000E454DA /* TKCalendarDayTimelineView.h in Headers */,
3B6EDDF711547C3100E454DA /* TKCalendarDayEventView.h in Headers */,
3B6EDDF911547C3400E454DA /* TKGraphView.h in Headers */,
3B6EDDFA11547C3400E454DA /* TKGraphController.h in Headers */,
3B6EDDFD11547C3800E454DA /* TKEmptyView.h in Headers */,
Expand Down Expand Up @@ -745,9 +745,9 @@
3B6EDDEA11547C2700E454DA /* TKCalendarMonthViewController.m in Sources */,
3B6EDDEE11547C2900E454DA /* TKCalendarMonthTableViewController.m in Sources */,
3B6EDDF011547C2A00E454DA /* TapDetectingView.m in Sources */,
3B6EDDF211547C2C00E454DA /* ODCalendarDayViewController.m in Sources */,
3B6EDDF411547C2D00E454DA /* ODCalendarDayTimelineView.m in Sources */,
3B6EDDF611547C3000E454DA /* ODCalendarDayEventView.m in Sources */,
3B6EDDF211547C2C00E454DA /* TKCalendarDayViewController.m in Sources */,
3B6EDDF411547C2D00E454DA /* TKCalendarDayTimelineView.m in Sources */,
3B6EDDF611547C3000E454DA /* TKCalendarDayEventView.m in Sources */,
3B6EDDF811547C3300E454DA /* TKGraphView.m in Sources */,
3B6EDDFB11547C3500E454DA /* TKGraphController.m in Sources */,
3B6EDDFC11547C3800E454DA /* TKEmptyView.m in Sources */,
Expand Down
19 changes: 14 additions & 5 deletions src/TapkuLibrary/NSDate+TKCategory.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
#import <Foundation/Foundation.h>


@interface NSDate (TKCategory)

struct TKDateInformation {
int day;
int month;
Expand All @@ -45,26 +47,33 @@ struct TKDateInformation {
};
typedef struct TKDateInformation TKDateInformation;

- (TKDateInformation) dateInformation;
- (TKDateInformation) dateInformationWithTimeZone:(NSTimeZone*)tz;
+ (NSDate*) dateFromDateInformation:(TKDateInformation)info;
+ (NSDate*) dateFromDateInformation:(TKDateInformation)info timeZone:(NSTimeZone*)tz;




@interface NSDate (TKCategory)

@property (readonly,nonatomic) NSString *month;
@property (readonly,nonatomic) NSString *year;
@property (readonly,nonatomic) int daysInMonth; // ie. 31, 30 29
@property (readonly,nonatomic) int weekdayWithMondayFirst;
@property (readonly,nonatomic) BOOL isToday;


- (BOOL)isSameDay:(NSDate*)anotherDate;
- (BOOL) isSameDay:(NSDate*)anotherDate;
- (int) differenceInDaysTo:(NSDate *)toDate;
- (int) differenceInMonthsTo:(NSDate *)toDate;

- (int) daysBetweenDate:(NSDate*)d;


- (TKDateInformation) dateInformation;
+ (NSDate*) dateFromDateInformation:(TKDateInformation)info;

- (NSString*) dateDescription;
- (NSDate *) dateByAddingDays:(NSUInteger)days;
+ (NSDate *) dateWithDatePart:(NSDate *)aDate andTimePart:(NSDate *)aTime;

+ (NSString*) dateInformationDescriptionWithInformation:(TKDateInformation)info;

@end
96 changes: 77 additions & 19 deletions src/TapkuLibrary/NSDate+TKCategory.m
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,31 @@

@implementation NSDate (TKCategory)

- (TKDateInformation) dateInformationWithTimeZone:(NSTimeZone*)tz{


TKDateInformation info;

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:tz];
NSDateComponents *comp = [gregorian components:(NSMonthCalendarUnit | NSMinuteCalendarUnit | NSYearCalendarUnit |
NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit)
fromDate:self];
info.day = [comp day];
info.month = [comp month];
info.year = [comp year];

info.hour = [comp hour];
info.minute = [comp minute];
info.second = [comp second];

info.weekday = [comp weekday];


[gregorian release];
return info;

}

- (TKDateInformation) dateInformation{

Expand All @@ -57,6 +82,24 @@ - (TKDateInformation) dateInformation{
return info;
}

+ (NSDate*) dateFromDateInformation:(TKDateInformation)info timeZone:(NSTimeZone*)tz{

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
[gregorian setTimeZone:tz];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:[NSDate date]];

[comp setDay:info.day];
[comp setMonth:info.month];
[comp setYear:info.year];
[comp setHour:info.hour];
[comp setMinute:info.minute];
[comp setSecond:info.second];
[comp setTimeZone:tz];

return [gregorian dateFromComponents:comp];
}


+ (NSDate*) dateFromDateInformation:(TKDateInformation)info{

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
Expand All @@ -68,11 +111,19 @@ + (NSDate*) dateFromDateInformation:(TKDateInformation)info{
[comp setHour:info.hour];
[comp setMinute:info.minute];
[comp setSecond:info.second];
//[comp setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

return [gregorian dateFromComponents:comp];
}


- (int) daysBetweenDate:(NSDate*)d{

NSTimeInterval time = [self timeIntervalSinceDate:d];
return abs(time / 60 / 60/ 24);

}

// ------------------
- (NSString*) month{
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
Expand All @@ -84,18 +135,6 @@ - (NSString*) year{
[dateFormatter setDateFormat:@"yyyy"];
return [dateFormatter stringFromDate:self];
}
- (int) daysInMonth{

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:self];
[comp setDay:0];
[comp setMonth:comp.month+1];

int days = [[gregorian components:NSDayCalendarUnit fromDate:[gregorian dateFromComponents:comp]] day];
[gregorian release];

return days;
}
// ------------------


Expand Down Expand Up @@ -211,7 +250,7 @@ - (int) weekdayWithMondayFirst{


/* ----- start snippet from http://www.alexcurylo.com/blog/2009/07/25/snippet-naturaldates/ ----- */
- (int)differenceInDaysTo:(NSDate *)toDate{
- (int) differenceInDaysTo:(NSDate *)toDate{
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *components = [gregorian components:NSDayCalendarUnit
Expand All @@ -222,7 +261,7 @@ - (int)differenceInDaysTo:(NSDate *)toDate{
[gregorian release];
return days;
}
- (int)differenceInMonthsTo:(NSDate *)toDate{
- (int) differenceInMonthsTo:(NSDate *)toDate{
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *components = [gregorian components:NSMonthCalendarUnit
Expand All @@ -233,23 +272,42 @@ - (int)differenceInMonthsTo:(NSDate *)toDate{
[gregorian release];
return months;
}
- (BOOL)isSameDay:(NSDate*)anotherDate{
- (BOOL) isSameDay:(NSDate*)anotherDate{
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components1 = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:self];
NSDateComponents* components2 = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:anotherDate];
return ([components1 year] == [components2 year] && [components1 month] == [components2 month] && [components1 day] == [components2 day]);
}
- (BOOL)isToday{
- (BOOL) isToday{
return [self isSameDay:[NSDate date]];
}

/* ----- end snippet from http://www.alexcurylo.com/blog/2009/07/25/snippet-naturaldates/ ----- */
/* ----- end snippet ----- */


- (NSString*) dateDescription{

return [[self description] substringToIndex:10];
}
- (NSDate *) dateByAddingDays:(NSUInteger)days {
NSDateComponents *c = [[[NSDateComponents alloc] init] autorelease];
c.day = days;
return [[NSCalendar currentCalendar] dateByAddingComponents:c toDate:self options:0];
}
+ (NSDate *) dateWithDatePart:(NSDate *)aDate andTimePart:(NSDate *)aTime {
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
NSString *datePortion = [dateFormatter stringFromDate:aDate];

[dateFormatter setDateFormat:@"HH:mm"];
NSString *timePortion = [dateFormatter stringFromDate:aTime];

[dateFormatter setDateFormat:@"dd/MM/yyyy HH:mm"];
NSString *dateTime = [NSString stringWithFormat:@"%@ %@",datePortion,timePortion];
return [dateFormatter dateFromString:dateTime];
}


+ (NSString*) dateInformationDescriptionWithInformation:(TKDateInformation)info{
return [NSString stringWithFormat:@"%d %d %d %d:%d:%d",info.month,info.day,info.year,info.hour,info.minute,info.second];
}

@end
10 changes: 8 additions & 2 deletions src/TapkuLibrary/ODCalendarDayEventView.h → src/TapkuLibrary/TKCalendarDayEventView.h
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//
// ODCalendarDayEventView.h
// Created by Anthony Mittaz on 20/10/09.
// Created by Devin Ross on 7/28/09.
//
/*
Expand Down Expand Up @@ -33,19 +33,25 @@

#define VERTICAL_DIFF 50.0

@interface ODCalendarDayEventView : TapDetectingView {
@interface TKCalendarDayEventView : TapDetectingView {
NSNumber *_id;
NSDate *_startDate;
NSDate *_endDate;
NSString *_title;
NSString *_location;
UIColor *balloonColorTop;
UIColor *balloonColorBottom;
UIColor *textColor;
}

@property (nonatomic, copy) NSNumber *id;
@property (nonatomic, copy) NSDate *startDate;
@property (nonatomic, copy) NSDate *endDate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *location;
@property (nonatomic, retain) UIColor *balloonColorTop;
@property (nonatomic, retain) UIColor *balloonColorBottom;
@property (nonatomic, copy) UIColor *textColor;

- (void)setupCustomInitialisation;

Expand Down
Loading

0 comments on commit f4803bf

Please sign in to comment.