Browse Source

New Additions!

v1.2.1
Abhishek Banthia 9 years ago
parent
commit
d9995def1d
  1. 56
      Clocker.xcodeproj/project.pbxproj
  2. BIN
      Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  3. 2
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist
  4. 5
      Clocker/AboutUsWindow/CLAboutUsView.xib
  5. 1
      Clocker/AboutUsWindow/CLAboutUsViewController.h
  6. 2
      Clocker/AboutUsWindow/CLAboutUsViewController.m
  7. 31
      Clocker/Appearance Tab/CLAppearanceView.xib
  8. 5
      Clocker/ApplicationDelegate.m
  9. 3
      Clocker/Custom Table Cell Views/CLTimezoneCellView.h
  10. 15
      Clocker/Custom Table Cell Views/CLTimezoneCellView.m
  11. 21
      Clocker/Date Tools/DateTools-master/.gitignore
  12. 7
      Clocker/Date Tools/DateTools-master/.travis.yml
  13. 35
      Clocker/Date Tools/DateTools-master/DateTools/DTConstants.h
  14. 33
      Clocker/Date Tools/DateTools-master/DateTools/DTConstants.m
  15. 38
      Clocker/Date Tools/DateTools-master/DateTools/DTError.h
  16. 72
      Clocker/Date Tools/DateTools-master/DateTools/DTError.m
  17. 123
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriod.h
  18. 642
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriod.m
  19. 49
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodChain.h
  20. 218
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodChain.m
  21. 56
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodCollection.h
  22. 370
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodCollection.m
  23. 62
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodGroup.h
  24. 234
      Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodGroup.m
  25. BIN
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ar.lproj/DateTools.strings
  26. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/bg.lproj/DateTools.strings
  27. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ca.lproj/DateTools.strings
  28. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/cs.lproj/DateTools.strings
  29. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/cy.lproj/DateTools.strings
  30. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/da.lproj/DateTools.strings
  31. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/de.lproj/DateTools.strings
  32. 89
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/en.lproj/DateTools.strings
  33. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/es.lproj/DateTools.strings
  34. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/eu.lproj/DateTools.strings
  35. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/fi.lproj/DateTools.strings
  36. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/fr.lproj/DateTools.strings
  37. BIN
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/gre.lproj/DateTools.strings
  38. 89
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/gu.lproj/DateTools.strings
  39. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/he.lproj/DateTools.strings
  40. 89
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/hi.lproj/DateTools.strings
  41. 44
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/hr.lproj/DateTools.strings
  42. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/hu.lproj/DateTools.strings
  43. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/id.lproj/DateTools.strings
  44. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/is.lproj/DateTools.strings
  45. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/it.lproj/DateTools.strings
  46. 90
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ja.lproj/DateTools.strings
  47. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ko.lproj/DateTools.strings
  48. 24
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/lv.lproj/DateTools.strings
  49. 89
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ms.lproj/DateTools.strings
  50. 125
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/nb.lproj/DateTools.strings
  51. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/nl.lproj/DateTools.strings
  52. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/pl.lproj/DateTools.strings
  53. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/pt-PT.lproj/DateTools.strings
  54. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/pt.lproj/DateTools.strings
  55. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ro.lproj/DateTools.strings
  56. 125
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ru.lproj/DateTools.strings
  57. 89
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/sl.lproj/DateTools.strings
  58. BIN
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/sv.lproj/DateTools.strings
  59. BIN
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/th.lproj/DateTools.strings
  60. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/tr.lproj/DateTools.strings
  61. 125
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/uk.lproj/DateTools.strings
  62. 71
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/vi.lproj/DateTools.strings
  63. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/zh-Hans.lproj/DateTools.strings
  64. 80
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/zh-Hant.lproj/DateTools.strings
  65. 29
      Clocker/Date Tools/DateTools-master/DateTools/DateTools.h
  66. 180
      Clocker/Date Tools/DateTools-master/DateTools/NSDate+DateTools.h
  67. 1721
      Clocker/Date Tools/DateTools-master/DateTools/NSDate+DateTools.m
  68. 26
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateTools/Info.plist
  69. 837
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample.xcodeproj/project.pbxproj
  70. 7
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  71. 110
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample.xcodeproj/xcshareddata/xcschemes/DateTools.xcscheme
  72. 15
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/AppDelegate.h
  73. 78
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/AppDelegate.m
  74. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar.png
  75. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar@2x.png
  76. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar_filled.png
  77. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar_filled@2x.png
  78. 489
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Colours.h
  79. 1303
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Colours.m
  80. 36
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsExample-Info.plist
  81. 16
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsExample-Prefix.pch
  82. 13
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsViewController.h
  83. 114
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsViewController.m
  84. 157
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsViewController.xib
  85. 13
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/ExampleNavigationController.h
  86. 50
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/ExampleNavigationController.m
  87. 23
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Images.xcassets/AppIcon.appiconset/Contents.json
  88. 23
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Images.xcassets/LaunchImage.launchimage/Contents.json
  89. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents.png
  90. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents@2x.png
  91. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents_filled.png
  92. BIN
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents_filled@2x.png
  93. 13
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/TimePeriodsViewController.h
  94. 188
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/TimePeriodsViewController.m
  95. 162
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/TimePeriodsViewController.xib
  96. 2
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/en.lproj/InfoPlist.strings
  97. 18
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/main.m
  98. 22
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExampleTests/DateToolsExampleTests-Info.plist
  99. 2
      Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExampleTests/en.lproj/InfoPlist.strings
  100. BIN
      Clocker/Images/Sunrise-512x512.png
  101. Some files were not shown because too many files have changed in this diff Show More

56
Clocker.xcodeproj/project.pbxproj

@ -37,6 +37,14 @@
9A8605BB1BEC14DC00A810A4 /* PanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605B91BEC14DC00A810A4 /* PanelController.m */; };
9A8605BF1BEC14F600A810A4 /* BackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605BC1BEC14F600A810A4 /* BackgroundView.m */; };
9A8605C01BEC14F600A810A4 /* Panel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605BD1BEC14F600A810A4 /* Panel.m */; };
9A87DAC41C358FA800A8CF3B /* DateTools.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9A87DAB41C358FA800A8CF3B /* DateTools.bundle */; };
9A87DAC51C358FA800A8CF3B /* DTConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DAB71C358FA800A8CF3B /* DTConstants.m */; };
9A87DAC61C358FA800A8CF3B /* DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DAB91C358FA800A8CF3B /* DTError.m */; };
9A87DAC71C358FA800A8CF3B /* DTTimePeriod.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DABB1C358FA800A8CF3B /* DTTimePeriod.m */; };
9A87DAC81C358FA800A8CF3B /* DTTimePeriodChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DABD1C358FA800A8CF3B /* DTTimePeriodChain.m */; };
9A87DAC91C358FA800A8CF3B /* DTTimePeriodCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DABF1C358FA800A8CF3B /* DTTimePeriodCollection.m */; };
9A87DACA1C358FA800A8CF3B /* DTTimePeriodGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DAC11C358FA800A8CF3B /* DTTimePeriodGroup.m */; };
9A87DACB1C358FA800A8CF3B /* NSDate+DateTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A87DAC31C358FA800A8CF3B /* NSDate+DateTools.m */; };
9A9E63861C2C673E009A299B /* CLAppFeedbackWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9E63841C2C673E009A299B /* CLAppFeedbackWindowController.m */; };
9A9E63871C2C673E009A299B /* CLAppFeedbackWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A9E63851C2C673E009A299B /* CLAppFeedbackWindow.xib */; };
9A9E875A1C1FED1A00A7A2DF /* Parse.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A9E87581C1FED1A00A7A2DF /* Parse.framework */; };
@ -119,6 +127,22 @@
9A8605CA1BEC155B00A810A4 /* ApplicationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ApplicationDelegate.h; path = Clocker/ApplicationDelegate.h; sourceTree = "<group>"; };
9A8605CB1BEC155B00A810A4 /* ColoredButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColoredButton.h; path = Clocker/ColoredButton.h; sourceTree = "<group>"; };
9A8605CC1BEC155B00A810A4 /* Clocker-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Clocker-Prefix.pch"; path = "Clocker/Clocker-Prefix.pch"; sourceTree = "<group>"; };
9A87DAB41C358FA800A8CF3B /* DateTools.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = DateTools.bundle; path = "Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle"; sourceTree = "<group>"; };
9A87DAB51C358FA800A8CF3B /* DateTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DateTools.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DateTools.h"; sourceTree = "<group>"; };
9A87DAB61C358FA800A8CF3B /* DTConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTConstants.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DTConstants.h"; sourceTree = "<group>"; };
9A87DAB71C358FA800A8CF3B /* DTConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTConstants.m; path = "Clocker/Date Tools/DateTools-master/DateTools/DTConstants.m"; sourceTree = "<group>"; };
9A87DAB81C358FA800A8CF3B /* DTError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTError.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DTError.h"; sourceTree = "<group>"; };
9A87DAB91C358FA800A8CF3B /* DTError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTError.m; path = "Clocker/Date Tools/DateTools-master/DateTools/DTError.m"; sourceTree = "<group>"; };
9A87DABA1C358FA800A8CF3B /* DTTimePeriod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriod.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriod.h"; sourceTree = "<group>"; };
9A87DABB1C358FA800A8CF3B /* DTTimePeriod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriod.m; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriod.m"; sourceTree = "<group>"; };
9A87DABC1C358FA800A8CF3B /* DTTimePeriodChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriodChain.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodChain.h"; sourceTree = "<group>"; };
9A87DABD1C358FA800A8CF3B /* DTTimePeriodChain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriodChain.m; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodChain.m"; sourceTree = "<group>"; };
9A87DABE1C358FA800A8CF3B /* DTTimePeriodCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriodCollection.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodCollection.h"; sourceTree = "<group>"; };
9A87DABF1C358FA800A8CF3B /* DTTimePeriodCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriodCollection.m; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodCollection.m"; sourceTree = "<group>"; };
9A87DAC01C358FA800A8CF3B /* DTTimePeriodGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriodGroup.h; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodGroup.h"; sourceTree = "<group>"; };
9A87DAC11C358FA800A8CF3B /* DTTimePeriodGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriodGroup.m; path = "Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodGroup.m"; sourceTree = "<group>"; };
9A87DAC21C358FA800A8CF3B /* NSDate+DateTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSDate+DateTools.h"; path = "Clocker/Date Tools/DateTools-master/DateTools/NSDate+DateTools.h"; sourceTree = "<group>"; };
9A87DAC31C358FA800A8CF3B /* NSDate+DateTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSDate+DateTools.m"; path = "Clocker/Date Tools/DateTools-master/DateTools/NSDate+DateTools.m"; sourceTree = "<group>"; };
9A9E63831C2C673E009A299B /* CLAppFeedbackWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLAppFeedbackWindowController.h; path = "Clocker/App Feedback/CLAppFeedbackWindowController.h"; sourceTree = "<group>"; };
9A9E63841C2C673E009A299B /* CLAppFeedbackWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLAppFeedbackWindowController.m; path = "Clocker/App Feedback/CLAppFeedbackWindowController.m"; sourceTree = "<group>"; };
9A9E63851C2C673E009A299B /* CLAppFeedbackWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CLAppFeedbackWindow.xib; path = "Clocker/App Feedback/CLAppFeedbackWindow.xib"; sourceTree = "<group>"; };
@ -283,6 +307,29 @@
name = Controllers;
sourceTree = "<group>";
};
9A87DA4F1C358F8200A8CF3B /* Date Tools */ = {
isa = PBXGroup;
children = (
9A87DAB41C358FA800A8CF3B /* DateTools.bundle */,
9A87DAB51C358FA800A8CF3B /* DateTools.h */,
9A87DAB61C358FA800A8CF3B /* DTConstants.h */,
9A87DAB71C358FA800A8CF3B /* DTConstants.m */,
9A87DAB81C358FA800A8CF3B /* DTError.h */,
9A87DAB91C358FA800A8CF3B /* DTError.m */,
9A87DABA1C358FA800A8CF3B /* DTTimePeriod.h */,
9A87DABB1C358FA800A8CF3B /* DTTimePeriod.m */,
9A87DABC1C358FA800A8CF3B /* DTTimePeriodChain.h */,
9A87DABD1C358FA800A8CF3B /* DTTimePeriodChain.m */,
9A87DABE1C358FA800A8CF3B /* DTTimePeriodCollection.h */,
9A87DABF1C358FA800A8CF3B /* DTTimePeriodCollection.m */,
9A87DAC01C358FA800A8CF3B /* DTTimePeriodGroup.h */,
9A87DAC11C358FA800A8CF3B /* DTTimePeriodGroup.m */,
9A87DAC21C358FA800A8CF3B /* NSDate+DateTools.h */,
9A87DAC31C358FA800A8CF3B /* NSDate+DateTools.m */,
);
name = "Date Tools";
sourceTree = "<group>";
};
9A9E875B1C1FED1E00A7A2DF /* Parse */ = {
isa = PBXGroup;
children = (
@ -313,6 +360,7 @@
DD4F7BF913C30F9F00825C6E = {
isa = PBXGroup;
children = (
9A87DA4F1C358F8200A8CF3B /* Date Tools */,
9ABF586F1C29A7EB00BD0187 /* Model */,
9AF9A1681C250AA300EE7C2A /* Reachability */,
9A9E875B1C1FED1E00A7A2DF /* Parse */,
@ -435,6 +483,7 @@
9A32473A1C263F4F00CF6B6E /* CLAppearanceView.xib in Resources */,
9A5951C21C1D0AAD009C17AA /* CLOneWindow.xib in Resources */,
9A56DB801C1CFB73004CE6AF /* MainMenu.xib in Resources */,
9A87DAC41C358FA800A8CF3B /* DateTools.bundle in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -463,14 +512,20 @@
buildActionMask = 2147483647;
files = (
9A8605BF1BEC14F600A810A4 /* BackgroundView.m in Sources */,
9A87DAC51C358FA800A8CF3B /* DTConstants.m in Sources */,
9AB9357B1C1AD8F7001285A0 /* CLRatingCellView.m in Sources */,
9A87DAC81C358FA800A8CF3B /* DTTimePeriodChain.m in Sources */,
9A87DAC71C358FA800A8CF3B /* DTTimePeriod.m in Sources */,
9A3247321C25FD3A00CF6B6E /* CLCustomSliderCell.m in Sources */,
9A392EED1C1CE9950072C10A /* CLPreferencesViewController.m in Sources */,
9A5951BD1C1D0A8D009C17AA /* CommonStrings.m in Sources */,
9A5951FA1C1D5214009C17AA /* iVersion.m in Sources */,
9A87DAC61C358FA800A8CF3B /* DTError.m in Sources */,
9A87DACA1C358FA800A8CF3B /* DTTimePeriodGroup.m in Sources */,
9A25F7471C1A5E17007D369B /* iRate.m in Sources */,
9A8605C01BEC14F600A810A4 /* Panel.m in Sources */,
9A8605BA1BEC14DC00A810A4 /* StatusItemView.m in Sources */,
9A87DAC91C358FA800A8CF3B /* DTTimePeriodCollection.m in Sources */,
9A3247391C263F4F00CF6B6E /* CLAppearanceViewController.m in Sources */,
9A9E63861C2C673E009A299B /* CLAppFeedbackWindowController.m in Sources */,
9A8605BB1BEC14DC00A810A4 /* PanelController.m in Sources */,
@ -482,6 +537,7 @@
9A8605B31BEC14A600A810A4 /* ColoredButton.m in Sources */,
9A8605AE1BEC148400A810A4 /* main.m in Sources */,
9A392EE81C1CDD530072C10A /* CLAboutUsViewController.m in Sources */,
9A87DACB1C358FA800A8CF3B /* NSDate+DateTools.m in Sources */,
9AF9A16B1C250AB300EE7C2A /* Reachability.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;

BIN
Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate generated

Binary file not shown.

2
Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist

@ -7,7 +7,7 @@
<key>Clocker.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>

5
Clocker/AboutUsWindow/CLAboutUsView.xib

@ -6,6 +6,7 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CLAboutUsViewController">
<connections>
<outlet property="versionField" destination="FG9-E5-o8y" id="nBg-l0-ELU"/>
<outlet property="view" destination="FS5-f2-b1Z" id="qSe-zw-rRT"/>
</connections>
</customObject>
@ -36,10 +37,9 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FG9-E5-o8y">
<rect key="frame" x="153" y="168" width="79" height="23"/>
<rect key="frame" x="153" y="168" width="316" height="23"/>
<constraints>
<constraint firstAttribute="height" constant="23" id="APM-BF-sIg"/>
<constraint firstAttribute="width" constant="75" id="W3D-bf-G5h"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Version 1.2" id="ctT-VL-V5M">
<font key="font" size="16" name="SFUIDisplay-Light"/>
@ -151,6 +151,7 @@
<constraint firstItem="5Eo-aJ-L8H" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="a9Y-c0-NKB"/>
<constraint firstAttribute="bottom" secondItem="P3u-Um-Nby" secondAttribute="bottom" constant="20" id="csw-Zl-TRQ"/>
<constraint firstItem="q67-QZ-7g3" firstAttribute="leading" secondItem="fgO-N3-3oh" secondAttribute="trailing" constant="8" id="fA5-O5-kY8"/>
<constraint firstAttribute="trailing" secondItem="FG9-E5-o8y" secondAttribute="trailing" constant="20" id="j5d-17-Loc"/>
<constraint firstItem="FG9-E5-o8y" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="kyh-fi-23P"/>
<constraint firstItem="5Eo-aJ-L8H" firstAttribute="top" secondItem="FG9-E5-o8y" secondAttribute="bottom" constant="2" id="pVM-TS-Wvl"/>
<constraint firstItem="XlC-Xd-67t" firstAttribute="top" secondItem="FS5-f2-b1Z" secondAttribute="top" constant="13" id="slR-Qu-uJh"/>

1
Clocker/AboutUsWindow/CLAboutUsViewController.h

@ -12,5 +12,6 @@
@interface CLAboutUsViewController : NSViewController
@property (strong, nonatomic) CLAppFeedbackWindowController *feedbackWindow;
@property (weak) IBOutlet NSTextField *versionField;
@end

2
Clocker/AboutUsWindow/CLAboutUsViewController.m

@ -23,6 +23,8 @@ NSString *const CLFacebookPageURL = @"https://www.facebook.com/ClockerMenubarClo
- (void)viewDidLoad {
[super viewDidLoad];
self.versionField.stringValue = [NSString stringWithFormat:@"Version %@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]];
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

31
Clocker/Appearance Tab/CLAppearanceView.xib

@ -67,7 +67,7 @@
<font key="font" size="12" name="SFUIDisplay-Light"/>
<segments>
<segment label="Show Relative Dates"/>
<segment label="Show actual day" toolTip="Customize the timezone panel by selecting a theme!" selected="YES" tag="1"/>
<segment label="Show actual day" selected="YES" tag="1"/>
</segments>
</segmentedCell>
<connections>
@ -92,17 +92,46 @@
<binding destination="WGI-5h-l6M" name="selectedIndex" keyPath="values.is24HourFormatSelected" id="UsS-ER-9M9"/>
</connections>
</segmentedControl>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3d9-qg-dNb">
<rect key="frame" x="148" y="144" width="142" height="18"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Show Sunrise, Sunset Time" id="ZP5-1i-Bm8">
<font key="font" size="12" name="SFUIDisplay-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="atA-2r-FXV">
<rect key="frame" x="180" y="117" width="80" height="24"/>
<constraints>
<constraint firstAttribute="width" constant="76" id="dEg-kt-bk1"/>
<constraint firstAttribute="height" constant="21" id="ttW-aD-dh3"/>
</constraints>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="rIg-AP-wGG">
<font key="font" size="12" name="SFUIDisplay-Light"/>
<segments>
<segment label="Yes"/>
<segment label="No" selected="YES" tag="1"/>
</segments>
</segmentedCell>
<connections>
<binding destination="WGI-5h-l6M" name="selectedIndex" keyPath="values.displaySuntime" id="rkd-Nx-YEh"/>
</connections>
</segmentedControl>
</subviews>
<constraints>
<constraint firstItem="YQi-x8-6f8" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="6LU-d8-lKX"/>
<constraint firstItem="3d9-qg-dNb" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="FBj-0N-ltc"/>
<constraint firstItem="OrL-Ix-fmY" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="JtZ-ra-RaC"/>
<constraint firstItem="1eh-BT-2fK" firstAttribute="top" secondItem="YQi-x8-6f8" secondAttribute="bottom" constant="4" id="POa-Gi-Prk"/>
<constraint firstItem="atA-2r-FXV" firstAttribute="top" secondItem="3d9-qg-dNb" secondAttribute="bottom" constant="4" id="PY9-Mh-Qsb"/>
<constraint firstItem="atA-2r-FXV" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="Pjx-sg-kK0"/>
<constraint firstItem="5tI-fU-0lZ" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="Vkb-QV-unN"/>
<constraint firstItem="YQi-x8-6f8" firstAttribute="top" secondItem="5tI-fU-0lZ" secondAttribute="bottom" constant="8" id="WoY-W4-XuS"/>
<constraint firstItem="iVw-cq-zLz" firstAttribute="top" secondItem="OrL-Ix-fmY" secondAttribute="bottom" constant="8" id="XgM-Wl-Xap"/>
<constraint firstItem="iVw-cq-zLz" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="Zh8-Vn-VxM"/>
<constraint firstItem="5tI-fU-0lZ" firstAttribute="top" secondItem="iVw-cq-zLz" secondAttribute="bottom" constant="4" id="bo6-s2-Vfj"/>
<constraint firstItem="1eh-BT-2fK" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" constant="1.5" id="fvI-By-5Ef"/>
<constraint firstItem="3d9-qg-dNb" firstAttribute="top" secondItem="1eh-BT-2fK" secondAttribute="bottom" constant="8" id="iVY-Yj-mck"/>
<constraint firstItem="5TC-RQ-gzI" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="lc0-ud-Mnw"/>
<constraint firstItem="5TC-RQ-gzI" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="oI8-4L-ppf"/>
<constraint firstItem="OrL-Ix-fmY" firstAttribute="top" secondItem="5TC-RQ-gzI" secondAttribute="bottom" constant="4" id="rpk-WN-DT9"/>

5
Clocker/ApplicationDelegate.m

@ -99,6 +99,11 @@ void *kContextActivePanel = &kContextActivePanel;
[[NSUserDefaults standardUserDefaults] setObject:@"Default" forKey:CLThemeKey];
}
NSNumber *displaySuntimings = [[NSUserDefaults standardUserDefaults] objectForKey:CLDisplaySunTimingKey];
if (displaySuntimings == nil) {
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:0] forKey:CLDisplaySunTimingKey];
}
NSNumber *defaultTimeFormat = [[NSUserDefaults standardUserDefaults] objectForKey:CL24hourFormatSelectedKey];
if (defaultTimeFormat == nil) {
[[NSUserDefaults standardUserDefaults] setObject:@1 forKey:CL24hourFormatSelectedKey];

3
Clocker/Custom Table Cell Views/CLTimezoneCellView.h

@ -13,10 +13,11 @@
@property (weak) IBOutlet NSTextField *customName;
@property (weak) IBOutlet NSTextField *relativeDate;
@property (weak) IBOutlet NSTextField *time;
@property (weak) IBOutlet NSImageView *sunImage;
@property (weak) IBOutlet NSTextField *sunTime;
@property (nonatomic) NSInteger rowNumber;
- (void)updateTextColorWithColor:(NSColor *)color andCell:(CLTimezoneCellView*)cell;
- (void)setUpAutoLayoutWithCell:(CLTimezoneCellView *)cell;
@end

15
Clocker/Custom Table Cell Views/CLTimezoneCellView.m

@ -58,6 +58,21 @@
cell.relativeDate.textColor = color;
cell.customName.textColor = color;
cell.time.textColor = color;
cell.sunTime.textColor = color;
}
- (void)setUpAutoLayoutWithCell:(CLTimezoneCellView *)cell
{
CGFloat width = [cell.relativeDate.stringValue
sizeWithAttributes: @{NSFontAttributeName:cell.relativeDate.font}].width;
for (NSLayoutConstraint *constraint in cell.relativeDate.constraints)
{
if (constraint.constant > 20)
{
constraint.constant = width+8;
}
}
}
@end

21
Clocker/Date Tools/DateTools-master/.gitignore vendored

@ -0,0 +1,21 @@
# Xcode
.DS_Store
*/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
*.hmap
*.xccheckout
#CocoaPods
Pods

7
Clocker/Date Tools/DateTools-master/.travis.yml

@ -0,0 +1,7 @@
language: objective-c
before_script:
- gem install xcpretty
script:
- xcodebuild -project Tests/DateToolsTests/DateToolsTests.xcodeproj -scheme DateToolsTests -sdk iphonesimulator test | xcpretty -c

35
Clocker/Date Tools/DateTools-master/DateTools/DTConstants.h

@ -0,0 +1,35 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
FOUNDATION_EXPORT const long long SECONDS_IN_YEAR;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_MONTH_28;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_MONTH_29;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_MONTH_30;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_MONTH_31;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_WEEK;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_DAY;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_HOUR;
FOUNDATION_EXPORT const NSInteger SECONDS_IN_MINUTE;
FOUNDATION_EXPORT const NSInteger MILLISECONDS_IN_DAY;
#import "DTError.h"

33
Clocker/Date Tools/DateTools-master/DateTools/DTConstants.m

@ -0,0 +1,33 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTConstants.h"
const long long SECONDS_IN_YEAR = 31556900;
const NSInteger SECONDS_IN_MONTH_28 = 2419200;
const NSInteger SECONDS_IN_MONTH_29 = 2505600;
const NSInteger SECONDS_IN_MONTH_30 = 2592000;
const NSInteger SECONDS_IN_MONTH_31 = 2678400;
const NSInteger SECONDS_IN_WEEK = 604800;
const NSInteger SECONDS_IN_DAY = 86400;
const NSInteger SECONDS_IN_HOUR = 3600;
const NSInteger SECONDS_IN_MINUTE = 60;
const NSInteger MILLISECONDS_IN_DAY = 86400000;

38
Clocker/Date Tools/DateTools-master/DateTools/DTError.h

@ -0,0 +1,38 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#pragma mark - Domain
extern NSString *const DTErrorDomain;
#pragma mark - Status Codes
static const NSUInteger DTInsertOutOfBoundsException = 0;
static const NSUInteger DTRemoveOutOfBoundsException = 1;
static const NSUInteger DTBadTypeException = 2;
@interface DTError : NSObject
+(void)throwInsertOutOfBoundsException:(NSInteger)index array:(NSArray *)array;
+(void)throwRemoveOutOfBoundsException:(NSInteger)index array:(NSArray *)array;
+(void)throwBadTypeException:(id)obj expectedClass:(Class)classType;
@end

72
Clocker/Date Tools/DateTools-master/DateTools/DTError.m

@ -0,0 +1,72 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTError.h"
#pragma mark - Domain
NSString *const DTErrorDomain = @"com.mattyork.dateTools";
@implementation DTError
+(void)throwInsertOutOfBoundsException:(NSInteger)index array:(NSArray *)array{
//Handle possible zero bounds
NSInteger arrayUpperBound = (array.count == 0)? 0:array.count;
//Create info for error
NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Operation was unsuccessful.", nil), NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"Attempted to insert DTTimePeriod at index %ld but the group is of size [0...%ld].", (long)index, (long)arrayUpperBound],NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Please try an index within the bounds or the group.", nil)};
//Handle Error
NSError *error = [NSError errorWithDomain:DTErrorDomain code:DTInsertOutOfBoundsException userInfo:userInfo];
[self printErrorWithCallStack:error];
}
+(void)throwRemoveOutOfBoundsException:(NSInteger)index array:(NSArray *)array{
//Handle possible zero bounds
NSInteger arrayUpperBound = (array.count == 0)? 0:array.count;
//Create info for error
NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Operation was unsuccessful.", nil), NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"Attempted to remove DTTimePeriod at index %ld but the group is of size [0...%ld].", (long)index, (long)arrayUpperBound],NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Please try an index within the bounds of the group.", nil)};
//Handle Error
NSError *error = [NSError errorWithDomain:DTErrorDomain code:DTRemoveOutOfBoundsException userInfo:userInfo];
[self printErrorWithCallStack:error];
}
+(void)throwBadTypeException:(id)obj expectedClass:(Class)classType{
//Create info for error
NSDictionary *userInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Operation was unsuccessful.", nil), NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"Attempted to insert object of class %@ when expecting object of class %@.", NSStringFromClass([obj class]), NSStringFromClass(classType)],NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Please try again by inserting a DTTimePeriod object.", nil)};
//Handle Error
NSError *error = [NSError errorWithDomain:DTErrorDomain code:DTBadTypeException userInfo:userInfo];
[self printErrorWithCallStack:error];
}
+(void)printErrorWithCallStack:(NSError *)error{
//Print error
NSLog(@"%@", error);
//Print call stack
for (NSString *symbol in [NSThread callStackSymbols]) {
NSLog(@"\n\n %@", symbol);
}
}
@end

123
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriod.h

@ -0,0 +1,123 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSUInteger, DTTimePeriodRelation){
DTTimePeriodRelationAfter,
DTTimePeriodRelationStartTouching,
DTTimePeriodRelationStartInside,
DTTimePeriodRelationInsideStartTouching,
DTTimePeriodRelationEnclosingStartTouching,
DTTimePeriodRelationEnclosing,
DTTimePeriodRelationEnclosingEndTouching,
DTTimePeriodRelationExactMatch,
DTTimePeriodRelationInside,
DTTimePeriodRelationInsideEndTouching,
DTTimePeriodRelationEndInside,
DTTimePeriodRelationEndTouching,
DTTimePeriodRelationBefore,
DTTimePeriodRelationNone //One or more of the dates does not exist
};
typedef NS_ENUM(NSUInteger, DTTimePeriodSize) {
DTTimePeriodSizeSecond,
DTTimePeriodSizeMinute,
DTTimePeriodSizeHour,
DTTimePeriodSizeDay,
DTTimePeriodSizeWeek,
DTTimePeriodSizeMonth,
DTTimePeriodSizeYear
};
typedef NS_ENUM(NSUInteger, DTTimePeriodInterval) {
DTTimePeriodIntervalOpen,
DTTimePeriodIntervalClosed
};
typedef NS_ENUM(NSUInteger, DTTimePeriodAnchor) {
DTTimePeriodAnchorStart,
DTTimePeriodAnchorCenter,
DTTimePeriodAnchorEnd
};
@interface DTTimePeriod : NSObject
/**
* The start date for a DTTimePeriod representing the starting boundary of the time period
*/
@property (nonatomic,strong) NSDate *StartDate;
/**
* The end date for a DTTimePeriod representing the ending boundary of the time period
*/
@property (nonatomic,strong) NSDate *EndDate;
#pragma mark - Custom Init / Factory Methods
-(instancetype)initWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate;
+(instancetype)timePeriodWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate;
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size startingAt:(NSDate *)date;
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount startingAt:(NSDate *)date;
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size endingAt:(NSDate *)date;
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount endingAt:(NSDate *)date;
+(instancetype)timePeriodWithAllTime;
#pragma mark - Time Period Information
-(BOOL)hasStartDate;
-(BOOL)hasEndDate;
-(BOOL)isMoment;
-(double)durationInYears;
-(double)durationInWeeks;
-(double)durationInDays;
-(double)durationInHours;
-(double)durationInMinutes;
-(double)durationInSeconds;
#pragma mark - Time Period Relationship
-(BOOL)isEqualToPeriod:(DTTimePeriod *)period;
-(BOOL)isInside:(DTTimePeriod *)period;
-(BOOL)contains:(DTTimePeriod *)period;
-(BOOL)overlapsWith:(DTTimePeriod *)period;
-(BOOL)intersects:(DTTimePeriod *)period;
-(DTTimePeriodRelation)relationToPeriod:(DTTimePeriod *)period;
-(NSTimeInterval)gapBetween:(DTTimePeriod *)period;
#pragma mark - Date Relationships
-(BOOL)containsDate:(NSDate *)date interval:(DTTimePeriodInterval)interval;
#pragma mark - Period Manipulation
#pragma mark Shifts
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size;
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount;
-(void)shiftLaterWithSize:(DTTimePeriodSize)size;
-(void)shiftLaterWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount;
#pragma mark Lengthen / Shorten
-(void)lengthenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size;
-(void)lengthenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size amount:(NSInteger)amount;
-(void)shortenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size;
-(void)shortenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size amount:(NSInteger)amount;
#pragma mark - Helper Methods
-(DTTimePeriod *)copy;
@end

642
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriod.m

@ -0,0 +1,642 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTTimePeriod.h"
#import "NSDate+DateTools.h"
@interface DTTimePeriod ()
@end
@implementation DTTimePeriod
#pragma mark - Custom Init / Factory Methods
/**
* Initializes an instance of DTTimePeriod from a given start and end date
*
* @param startDate NSDate - Desired start date
* @param endDate NSDate - Desired end date
*
* @return DTTimePeriod - new instance
*/
-(instancetype)initWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate{
if (self = [super init]) {
self.StartDate = startDate;
self.EndDate = endDate;
}
return self;
}
/**
* Returns a new instance of DTTimePeriod from a given start and end date
*
* @param startDate NSDate - Desired start date
* @param endDate NSDate - Desired end date
*
* @return DTTimePeriod - new instance
*/
+(instancetype)timePeriodWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate{
return [[DTTimePeriod alloc] initWithStartDate:startDate endDate:endDate];
}
/**
* Returns a new instance of DTTimePeriod that starts on the provided start date
* and is of the size provided
*
* @param size DTTimePeriodSize - Desired size of the new time period
* @param date NSDate - Desired start date of the new time period
*
* @return DTTimePeriod - new instance
*/
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size startingAt:(NSDate *)date{
return [[DTTimePeriod alloc] initWithStartDate:date endDate:[DTTimePeriod dateWithAddedTime:size amount:1 baseDate:date]];
}
/**
* Returns a new instance of DTTimePeriod that starts on the provided start date
* and is of the size provided. The amount represents a multipler to the size (e.g. "2 weeks" or "4 years")
*
* @param size DTTimePeriodSize - Desired size of the new time period
* @param amount NSInteger - Desired multiplier of the size provided
* @param date NSDate - Desired start date of the new time period
*
* @return DTTimePeriod - new instance
*/
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount startingAt:(NSDate *)date{
return [[DTTimePeriod alloc] initWithStartDate:date endDate:[DTTimePeriod dateWithAddedTime:size amount:amount baseDate:date]];
}
/**
* Returns a new instance of DTTimePeriod that ends on the provided end date
* and is of the size provided
*
* @param size DTTimePeriodSize - Desired size of the new time period
* @param date NSDate - Desired end date of the new time period
*
* @return DTTimePeriod - new instance
*/
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size endingAt:(NSDate *)date{
return [[DTTimePeriod alloc] initWithStartDate:[DTTimePeriod dateWithSubtractedTime:size amount:1 baseDate:date] endDate:date];
}
/**
* Returns a new instance of DTTimePeriod that ends on the provided end date
* and is of the size provided. The amount represents a multipler to the size (e.g. "2 weeks" or "4 years")
*
* @param size DTTimePeriodSize - Desired size of the new time period
* @param amount NSInteger - Desired multiplier of the size provided
* @param date NSDate - Desired end date of the new time period
*
* @return DTTimePeriod - new instance
*/
+(instancetype)timePeriodWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount endingAt:(NSDate *)date{
return [[DTTimePeriod alloc] initWithStartDate:[DTTimePeriod dateWithSubtractedTime:size amount:amount baseDate:date] endDate:date];
}
/**
* Returns a new instance of DTTimePeriod that represents the largest time period available.
* The start date is in the distant past and the end date is in the distant future.
*
* @return DTTimePeriod - new instance
*/
+(instancetype)timePeriodWithAllTime{
return [[DTTimePeriod alloc] initWithStartDate:[NSDate distantPast] endDate:[NSDate distantFuture]];
}
/**
* Method serving the various factory methods as well as a few others.
* Returns a date with time added to a given base date. Includes multiplier amount.
*
* @param size DTTimePeriodSize - Desired size of the new time period
* @param amount NSInteger - Desired multiplier of the size provided
* @param date NSDate - Desired end date of the new time period
*
* @return NSDate - new instance
*/
+(NSDate *)dateWithAddedTime:(DTTimePeriodSize)size amount:(NSInteger)amount baseDate:(NSDate *)date{
switch (size) {
case DTTimePeriodSizeSecond:
return [date dateByAddingSeconds:amount];
break;
case DTTimePeriodSizeMinute:
return [date dateByAddingMinutes:amount];
break;
case DTTimePeriodSizeHour:
return [date dateByAddingHours:amount];
break;
case DTTimePeriodSizeDay:
return [date dateByAddingDays:amount];
break;
case DTTimePeriodSizeWeek:
return [date dateByAddingWeeks:amount];
break;
case DTTimePeriodSizeMonth:
return [date dateByAddingMonths:amount];
break;
case DTTimePeriodSizeYear:
return [date dateByAddingYears:amount];
break;
default:
break;
}
return date;
}
/**
* Method serving the various factory methods as well as a few others.
* Returns a date with time subtracted from a given base date. Includes multiplier amount.
*
* @param size DTTimePeriodSize - Desired size of the new time period
* @param amount NSInteger - Desired multiplier of the size provided
* @param date NSDate - Desired end date of the new time period
*
* @return NSDate - new instance
*/
+(NSDate *)dateWithSubtractedTime:(DTTimePeriodSize)size amount:(NSInteger)amount baseDate:(NSDate *)date{
switch (size) {
case DTTimePeriodSizeSecond:
return [date dateBySubtractingSeconds:amount];
break;
case DTTimePeriodSizeMinute:
return [date dateBySubtractingMinutes:amount];
break;
case DTTimePeriodSizeHour:
return [date dateBySubtractingHours:amount];
break;
case DTTimePeriodSizeDay:
return [date dateBySubtractingDays:amount];
break;
case DTTimePeriodSizeWeek:
return [date dateBySubtractingWeeks:amount];
break;
case DTTimePeriodSizeMonth:
return [date dateBySubtractingMonths:amount];
break;
case DTTimePeriodSizeYear:
return [date dateBySubtractingYears:amount];
break;
default:
break;
}
return date;
}
#pragma mark - Time Period Information
/**
* Returns a boolean representing whether the receiver's StartDate exists
* Returns YES if StartDate is not nil, otherwise NO
*
* @return BOOL
*/
-(BOOL)hasStartDate {
return (self.StartDate)? YES:NO;
}
/**
* Returns a boolean representing whether the receiver's EndDate exists
* Returns YES if EndDate is not nil, otherwise NO
*
* @return BOOL
*/
-(BOOL)hasEndDate {
return (self.EndDate)? YES:NO;
}
/**
* Returns a boolean representing whether the receiver is a "moment", that is the start and end dates are the same.
* Returns YES if receiver is a moment, otherwise NO
*
* @return BOOL
*/
-(BOOL)isMoment{
if (self.StartDate && self.EndDate) {
if ([self.StartDate isEqualToDate:self.EndDate]) {
return YES;
}
}
return NO;
}
/**
* Returns the duration of the receiver in years
*
* @return NSInteger
*/
-(double)durationInYears {
if (self.StartDate && self.EndDate) {
return [self.StartDate yearsEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in weeks
*
* @return double
*/
-(double)durationInWeeks {
if (self.StartDate && self.EndDate) {
return [self.StartDate weeksEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in days
*
* @return double
*/
-(double)durationInDays {
if (self.StartDate && self.EndDate) {
return [self.StartDate daysEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in hours
*
* @return double
*/
-(double)durationInHours {
if (self.StartDate && self.EndDate) {
return [self.StartDate hoursEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in minutes
*
* @return double
*/
-(double)durationInMinutes {
if (self.StartDate && self.EndDate) {
return [self.StartDate minutesEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in seconds
*
* @return double
*/
-(double)durationInSeconds {
if (self.StartDate && self.EndDate) {
return [self.StartDate secondsEarlierThan:self.EndDate];
}
return 0;
}
#pragma mark - Time Period Relationship
/**
* Returns a BOOL representing whether the receiver's start and end dates exatcly match a given time period
* Returns YES if the two periods are the same, otherwise NO
*
* @param period DTTimePeriod - Time period to compare to receiver
*
* @return BOOL
*/
-(BOOL)isEqualToPeriod:(DTTimePeriod *)period{
if ([self.StartDate isEqualToDate:period.StartDate] && [self.EndDate isEqualToDate:period.EndDate]) {
return YES;
}
return NO;
}
/**
* Returns a BOOL representing whether the receiver's start and end dates exatcly match a given time period or is contained within them
* Returns YES if the receiver is inside the given time period, otherwise NO
*
* @param period DTTimePeriod - Time period to compare to receiver
*
* @return BOOL
*/
-(BOOL)isInside:(DTTimePeriod *)period{
if ([period.StartDate isEarlierThanOrEqualTo:self.StartDate] && [period.EndDate isLaterThanOrEqualTo:self.EndDate]) {
return YES;
}
return NO;
}
/**
* Returns a BOOL representing whether the given time period's start and end dates exatcly match the receivers' or is contained within them
* Returns YES if the receiver is inside the given time period, otherwise NO
*
* @param period DTTimePeriod - Time period to compare to receiver
*
* @return BOOL
*/
-(BOOL)contains:(DTTimePeriod *)period{
if ([self.StartDate isEarlierThanOrEqualTo:period.StartDate] && [self.EndDate isLaterThanOrEqualTo:period.EndDate]) {
return YES;
}
return NO;
}
/**
* Returns a BOOL representing whether the receiver and the given time period overlap.
* This covers all space they share, minus instantaneous space (i.e. one's start date equals another's end date)
* Returns YES if they overlap, otherwise NO
*
* @param period DTTimePeriod - Time period to compare to receiver
*
* @return BOOL
*/
-(BOOL)overlapsWith:(DTTimePeriod *)period{
//Outside -> Inside
if ([period.StartDate isEarlierThan:self.StartDate] && [period.EndDate isLaterThan:self.StartDate]) {
return YES;
}
//Enclosing
else if ([period.StartDate isLaterThanOrEqualTo:self.StartDate] && [period.EndDate isEarlierThanOrEqualTo:self.EndDate]){
return YES;
}
//Inside -> Out
else if([period.StartDate isEarlierThan:self.EndDate] && [period.EndDate isLaterThan:self.EndDate]){
return YES;
}
return NO;
}
/**
* Returns a BOOL representing whether the receiver and the given time period overlap.
* This covers all space they share, including instantaneous space (i.e. one's start date equals another's end date)
* Returns YES if they overlap, otherwise NO
*
* @param period DTTimePeriod - Time period to compare to receiver
*
* @return BOOL
*/
-(BOOL)intersects:(DTTimePeriod *)period{
//Outside -> Inside
if ([period.StartDate isEarlierThan:self.StartDate] && [period.EndDate isLaterThanOrEqualTo:self.StartDate]) {
return YES;
}
//Enclosing
else if ([period.StartDate isLaterThanOrEqualTo:self.StartDate] && [period.EndDate isEarlierThanOrEqualTo:self.EndDate]){
return YES;
}
//Inside -> Out
else if([period.StartDate isEarlierThanOrEqualTo:self.EndDate] && [period.EndDate isLaterThan:self.EndDate]){
return YES;
}
return NO;
}
/**
* Returns the relationship of the receiver to a given time period
*
* @param period DTTimePeriod - Time period to compare to receiver
*
* @return DTTimePeriodRelation
*/
-(DTTimePeriodRelation)relationToPeriod:(DTTimePeriod *)period{
//Make sure that all start and end points exist for comparison
if (self.StartDate && self.EndDate && period.StartDate && period.EndDate) {
//Make sure time periods are of positive durations
if ([self.StartDate isEarlierThan:self.EndDate] && [period.StartDate isEarlierThan:period.EndDate]) {
//Make comparisons
if ([period.EndDate isEarlierThan:self.StartDate]) {
return DTTimePeriodRelationAfter;
}
else if ([period.EndDate isEqualToDate:self.StartDate]){
return DTTimePeriodRelationStartTouching;
}
else if ([period.StartDate isEarlierThan:self.StartDate] && [period.EndDate isEarlierThan:self.EndDate]){
return DTTimePeriodRelationStartInside;
}
else if ([period.StartDate isEqualToDate:self.StartDate] && [period.EndDate isLaterThan:self.EndDate]){
return DTTimePeriodRelationInsideStartTouching;
}
else if ([period.StartDate isEqualToDate:self.StartDate] && [period.EndDate isEarlierThan:self.EndDate]){
return DTTimePeriodRelationEnclosingStartTouching;
}
else if ([period.StartDate isLaterThan:self.StartDate] && [period.EndDate isEarlierThan:self.EndDate]){
return DTTimePeriodRelationEnclosing;
}
else if ([period.StartDate isLaterThan:self.StartDate] && [period.EndDate isEqualToDate:self.EndDate]){
return DTTimePeriodRelationEnclosingEndTouching;
}
else if ([period.StartDate isEqualToDate:self.StartDate] && [period.EndDate isEqualToDate:self.EndDate]){
return DTTimePeriodRelationExactMatch;
}
else if ([period.StartDate isEarlierThan:self.StartDate] && [period.EndDate isLaterThan:self.EndDate]){
return DTTimePeriodRelationInside;
}
else if ([period.StartDate isEarlierThan:self.StartDate] && [period.EndDate isEqualToDate:self.EndDate]){
return DTTimePeriodRelationInsideEndTouching;
}
else if ([period.StartDate isEarlierThan:self.EndDate] && [period.EndDate isLaterThan:self.EndDate]){
return DTTimePeriodRelationEndInside;
}
else if ([period.StartDate isEqualToDate:self.EndDate] && [period.EndDate isLaterThan:self.EndDate]){
return DTTimePeriodRelationEndTouching;
}
else if ([period.StartDate isLaterThan:self.EndDate]){
return DTTimePeriodRelationBefore;
}
}
}
return DTTimePeriodRelationNone;
}
/**
* Returns the gap in seconds between the receiver and provided time period
* Returns 0 if the time periods intersect, otherwise returns the gap between.
*
* @param period <#period description#>
*
* @return <#return value description#>
*/
-(NSTimeInterval)gapBetween:(DTTimePeriod *)period{
if ([self.EndDate isEarlierThan:period.StartDate]) {
return ABS([self.EndDate timeIntervalSinceDate:period.StartDate]);
}
else if ([period.EndDate isEarlierThan:self.StartDate]){
return ABS([period.EndDate timeIntervalSinceDate:self.StartDate]);
}
return 0;
}
#pragma mark - Date Relationships
/**
* Returns a BOOL representing whether the provided date is contained in the receiver.
*
* @param date NSDate - Date to evaluate
* @param interval DTTimePeriodInterval representing evaluation type (Closed includes StartDate and EndDate in evaluation, Open does not)
*
* @return <#return value description#>
*/
-(BOOL)containsDate:(NSDate *)date interval:(DTTimePeriodInterval)interval{
if (interval == DTTimePeriodIntervalOpen) {
if ([self.StartDate isEarlierThan:date] && [self.EndDate isLaterThan:date]) {
return YES;
}
else {
return NO;
}
}
else if (interval == DTTimePeriodIntervalClosed){
if ([self.StartDate isEarlierThanOrEqualTo:date] && [self.EndDate isLaterThanOrEqualTo:date]) {
return YES;
}
else {
return NO;
}
}
return NO;
}
#pragma mark - Period Manipulation
/**
* Shifts the StartDate and EndDate earlier by a given size amount
*
* @param size DTTimePeriodSize - Desired shift size
*/
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size{
[self shiftEarlierWithSize:size amount:1];
}
/**
* Shifts the StartDate and EndDate earlier by a given size amount. Amount multiplies size.
*
* @param size DTTimePeriodSize - Desired shift size
* @param amount NSInteger - Multiplier of size (i.e. "2 weeks" or "4 years")
*/
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount{
self.StartDate = [DTTimePeriod dateWithSubtractedTime:size amount:amount baseDate:self.StartDate];
self.EndDate = [DTTimePeriod dateWithSubtractedTime:size amount:amount baseDate:self.EndDate];
}
/**
* Shifts the StartDate and EndDate later by a given size amount
*
* @param size DTTimePeriodSize - Desired shift size
*/
-(void)shiftLaterWithSize:(DTTimePeriodSize)size{
[self shiftLaterWithSize:size amount:1];
}
/**
* Shifts the StartDate and EndDate later by a given size amount. Amount multiplies size.
*
* @param size DTTimePeriodSize - Desired shift size
* @param amount NSInteger - Multiplier of size (i.e. "2 weeks" or "4 years")
*/
-(void)shiftLaterWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount{
self.StartDate = [DTTimePeriod dateWithAddedTime:size amount:amount baseDate:self.StartDate];
self.EndDate = [DTTimePeriod dateWithAddedTime:size amount:amount baseDate:self.EndDate];
}
#pragma mark Lengthen / Shorten
/**
* Lengthens the receiver by a given amount, anchored by a provided point
*
* @param anchor DTTimePeriodAnchor - Anchor point for the lengthen (the date that stays the same)
* @param size DTTimePeriodSize - Desired lenghtening size
*/
-(void)lengthenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size{
[self lengthenWithAnchorDate:anchor size:size amount:1];
}
/**
* Lengthens the receiver by a given amount, anchored by a provided point. Amount multiplies size.
*
* @param anchor DTTimePeriodAnchor - Anchor point for the lengthen (the date that stays the same)
* @param size DTTimePeriodSize - Desired lenghtening size
* @param amount NSInteger - Multiplier of size (i.e. "2 weeks" or "4 years")
*/
-(void)lengthenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size amount:(NSInteger)amount{
switch (anchor) {
case DTTimePeriodAnchorStart:
self.EndDate = [DTTimePeriod dateWithAddedTime:size amount:amount baseDate:self.EndDate];
break;
case DTTimePeriodAnchorCenter:
self.StartDate = [DTTimePeriod dateWithSubtractedTime:size amount:amount/2 baseDate:self.StartDate];
self.EndDate = [DTTimePeriod dateWithAddedTime:size amount:amount/2 baseDate:self.EndDate];
break;
case DTTimePeriodAnchorEnd:
self.StartDate = [DTTimePeriod dateWithSubtractedTime:size amount:amount baseDate:self.StartDate];
break;
default:
break;
}
}
/**
* Shortens the receiver by a given amount, anchored by a provided point
*
* @param anchor DTTimePeriodAnchor - Anchor point for the shorten (the date that stays the same)
* @param size DTTimePeriodSize - Desired shortening size
*/
-(void)shortenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size{
[self shortenWithAnchorDate:anchor size:size amount:1];
}
/**
* Shortens the receiver by a given amount, anchored by a provided point. Amount multiplies size.
*
* @param anchor DTTimePeriodAnchor - Anchor point for the shorten (the date that stays the same)
* @param size DTTimePeriodSize - Desired shortening size
* @param amount NSInteger - Multiplier of size (i.e. "2 weeks" or "4 years")
*/
-(void)shortenWithAnchorDate:(DTTimePeriodAnchor)anchor size:(DTTimePeriodSize)size amount:(NSInteger)amount{
switch (anchor) {
case DTTimePeriodAnchorStart:
self.EndDate = [DTTimePeriod dateWithSubtractedTime:size amount:amount baseDate:self.EndDate];
break;
case DTTimePeriodAnchorCenter:
self.StartDate = [DTTimePeriod dateWithAddedTime:size amount:amount/2 baseDate:self.StartDate];
self.EndDate = [DTTimePeriod dateWithSubtractedTime:size amount:amount/2 baseDate:self.EndDate];
break;
case DTTimePeriodAnchorEnd:
self.StartDate = [DTTimePeriod dateWithAddedTime:size amount:amount baseDate:self.StartDate];
break;
default:
break;
}
}
#pragma mark - Helper Methods
-(DTTimePeriod *)copy{
DTTimePeriod *period = [DTTimePeriod timePeriodWithStartDate:[NSDate dateWithTimeIntervalSince1970:self.StartDate.timeIntervalSince1970] endDate:[NSDate dateWithTimeIntervalSince1970:self.EndDate.timeIntervalSince1970]];
return period;
}
@end

49
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodChain.h

@ -0,0 +1,49 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "DTTimePeriodGroup.h"
@interface DTTimePeriodChain : DTTimePeriodGroup {
DTTimePeriod *First;
DTTimePeriod *Last;
}
@property (nonatomic, readonly) DTTimePeriod *First;
@property (nonatomic, readonly) DTTimePeriod *Last;
#pragma mark - Custom Init / Factory Chain
+(DTTimePeriodChain *)chain;
#pragma mark - Chain Existence Manipulation
-(void)addTimePeriod:(DTTimePeriod *)period;
-(void)insertTimePeriod:(DTTimePeriod *)period atInedx:(NSInteger)index;
-(void)removeTimePeriodAtIndex:(NSInteger)index;
-(void)removeLatestTimePeriod;
-(void)removeEarliestTimePeriod;
#pragma mark - Chain Relationship
-(BOOL)isEqualToChain:(DTTimePeriodChain *)chain;
#pragma mark - Updates
-(void)updateVariables;
@end

218
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodChain.m

@ -0,0 +1,218 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTTimePeriodChain.h"
#import "DTError.h"
@interface DTTimePeriodChain ()
@end
@implementation DTTimePeriodChain
#pragma mark - Custom Init / Factory Chain
+(DTTimePeriodChain *)chain{
return [[DTTimePeriodChain alloc] init];
}
#pragma mark - Chain Existence Manipulation
-(void)addTimePeriod:(DTTimePeriod *)period{
if ([period class] != [DTTimePeriod class]) {
[DTError throwBadTypeException:period expectedClass:[DTTimePeriod class]];
return;
}
if (periods) {
if (periods.count > 0) {
//Create a modified period to be added based on size of passed in period
DTTimePeriod *modifiedPeriod = [DTTimePeriod timePeriodWithSize:DTTimePeriodSizeSecond amount:period.durationInSeconds startingAt:[periods[periods.count - 1] EndDate]];
//Add object to periods array
[periods addObject:modifiedPeriod];
}
else {
//Add object to periods array
[periods addObject:period];
}
}
else {
//Create new periods array
periods = [NSMutableArray array];
//Add object to periods array
[periods addObject:period];
}
//Set object's variables with updated array values
[self updateVariables];
}
-(void)insertTimePeriod:(DTTimePeriod *)period atInedx:(NSInteger)index{
if ([period class] != [DTTimePeriod class]) {
[DTError throwBadTypeException:period expectedClass:[DTTimePeriod class]];
return;
}
//Make sure the index is within the operable bounds of the periods array
if (index == 0) {
//Update bounds of period to make it fit in chain
DTTimePeriod *modifiedPeriod = [DTTimePeriod timePeriodWithSize:DTTimePeriodSizeSecond amount:period.durationInSeconds endingAt:[periods[0] EndDate]];
//Insert the updated object at the beginning of the periods array
[periods insertObject:modifiedPeriod atIndex:0];
}
else if (index > 0 && index < periods.count) {
//Shift time periods later if they fall after new period
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//Shift later
if (idx >= index) {
[((DTTimePeriod *) obj) shiftLaterWithSize:DTTimePeriodSizeSecond amount:period.durationInSeconds];
}
}];
//Update bounds of period to make it fit in chain
DTTimePeriod *modifiedPeriod = [DTTimePeriod timePeriodWithSize:DTTimePeriodSizeSecond amount:period.durationInSeconds startingAt:[periods[index - 1] EndDate]];
//Insert the updated object at the beginning of the periods array
[periods insertObject:modifiedPeriod atIndex:index];
//Set object's variables with updated array values
[self updateVariables];
}
else {
[DTError throwInsertOutOfBoundsException:index array:periods];
}
}
-(void)removeTimePeriodAtIndex:(NSInteger)index{
//Make sure the index is within the operable bounds of the periods array
if (index >= 0 && index < periods.count) {
DTTimePeriod *period = periods[index];
//Shift time periods later if they fall after new period
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//Shift earlier
if (idx > index) {
[((DTTimePeriod *) obj) shiftEarlierWithSize:DTTimePeriodSizeSecond amount:period.durationInSeconds];
}
}];
//Remove object
[periods removeObjectAtIndex:index];
//Set object's variables with updated array values
[self updateVariables];
}
else {
[DTError throwRemoveOutOfBoundsException:index array:periods];
}
}
-(void)removeLatestTimePeriod{
if (periods.count > 0) {
[periods removeLastObject];
//Update the object variables
if (periods.count > 0) {
//Set object's variables with updated array values
[self updateVariables];
}
else {
[self setVariablesNil];
}
}
}
-(void)removeEarliestTimePeriod{
if (periods > 0) {
//Shift time periods earlier
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//Shift earlier to account for removal of first element in periods array
[((DTTimePeriod *) obj) shiftEarlierWithSize:DTTimePeriodSizeSecond amount:[periods[0] durationInSeconds]];
}];
//Remove first period
[periods removeObjectAtIndex:0];
//Update the object variables
if (periods.count > 0) {
//Set object's variables with updated array values
[self updateVariables];
}
else {
[self setVariablesNil];
}
}
}
#pragma mark - Chain Relationship
-(BOOL)isEqualToChain:(DTTimePeriodChain *)chain{
//Check class
if ([chain class] != [DTTimePeriodChain class]) {
[DTError throwBadTypeException:chain expectedClass:[DTTimePeriodChain class]];
return NO;
}
//Check group level characteristics for speed
if (![self hasSameCharacteristicsAs:chain]) {
return NO;
}
//Check whole chain
__block BOOL isEqual = YES;
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (![chain[idx] isEqualToPeriod:obj]) {
isEqual = NO;
*stop = YES;
}
}];
return isEqual;
}
#pragma mark - Getters
-(DTTimePeriod *)First{
return First;
}
-(DTTimePeriod *)Last{
return Last;
}
#pragma mark - Helper Methods
-(void)updateVariables{
//Set helper variables
StartDate = [periods[0] StartDate];
EndDate = [periods[periods.count - 1] EndDate];
First = periods[0];
Last = periods[periods.count -1];
}
-(void)setVariablesNil{
//Set helper variables
StartDate = nil;
EndDate = nil;
First = nil;
Last = nil;
}
@end

56
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodCollection.h

@ -0,0 +1,56 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "DTTimePeriodGroup.h"
@interface DTTimePeriodCollection : DTTimePeriodGroup
#pragma mark - Custom Init / Factory Methods
+(DTTimePeriodCollection *)collection;
#pragma mark - Collection Manipulation
-(void)addTimePeriod:(DTTimePeriod *)period;
-(void)insertTimePeriod:(DTTimePeriod *)period atIndex:(NSInteger)index;
-(void)removeTimePeriodAtIndex:(NSInteger)index;
#pragma mark - Sorting
-(void)sortByStartAscending;
-(void)sortByStartDescending;
-(void)sortByEndAscending;
-(void)sortByEndDescending;
-(void)sortByDurationAscending;
-(void)sortByDurationDescending;
#pragma mark - Collection Relationship
-(DTTimePeriodCollection *)periodsInside:(DTTimePeriod *)period;
-(DTTimePeriodCollection *)periodsIntersectedByDate:(NSDate *)date;
-(DTTimePeriodCollection *)periodsIntersectedByPeriod:(DTTimePeriod *)period;
-(DTTimePeriodCollection *)periodsOverlappedByPeriod:(DTTimePeriod *)period;
-(BOOL)isEqualToCollection:(DTTimePeriodCollection *)collection considerOrder:(BOOL)considerOrder;
#pragma mark - Helper Methods
-(DTTimePeriodCollection *)copy;
#pragma mark - Updates
-(void)updateVariables;
@end

370
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodCollection.m

@ -0,0 +1,370 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTTimePeriodCollection.h"
#import "DTError.h"
#import "NSDate+DateTools.h"
@implementation DTTimePeriodCollection
#pragma mark - Custom Init / Factory Methods
/**
* Initializes a new instance of DTTimePeriodCollection
*
* @return DTTimePeriodCollection
*/
+(DTTimePeriodCollection *)collection{
return [[DTTimePeriodCollection alloc] init];
}
#pragma mark - Collection Manipulation
/**
* Adds a time period to the reciever.
*
* @param period DTTimePeriod - The time period to add to the collection
*/
-(void)addTimePeriod:(DTTimePeriod *)period{
if ([period isKindOfClass:[DTTimePeriod class]]) {
[periods addObject:period];
//Set object's variables with updated array values
[self updateVariables];
}
else {
[DTError throwBadTypeException:period expectedClass:[DTTimePeriod class]];
}
}
/**
* Inserts a time period to the receiver at a given index.
*
* @param period DTTimePeriod - The time period to insert into the collection
* @param index NSInteger - The index in the collection the time period is to be added at
*/
-(void)insertTimePeriod:(DTTimePeriod *)period atIndex:(NSInteger)index{
if ([period class] != [DTTimePeriod class]) {
[DTError throwBadTypeException:period expectedClass:[DTTimePeriod class]];
return;
}
if (index >= 0 && index < periods.count) {
[periods insertObject:period atIndex:index];
//Set object's variables with updated array values
[self updateVariables];
}
else {
[DTError throwInsertOutOfBoundsException:index array:periods];
}
}
/**
* Removes the time period at a given index from the collection
*
* @param index NSInteger - The index in the collection the time period is to be removed from
*/
-(void)removeTimePeriodAtIndex:(NSInteger)index{
if (index >= 0 && index < periods.count) {
[periods removeObjectAtIndex:index];
//Update the object variables
if (periods.count > 0) {
//Set object's variables with updated array values
[self updateVariables];
}
else {
[self setVariablesNil];
}
}
else {
[DTError throwRemoveOutOfBoundsException:index array:periods];
}
}
#pragma mark - Sorting
/**
* Sorts the time periods in the collection by earliest start date to latest start date.
*/
-(void)sortByStartAscending{
[periods sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [((DTTimePeriod *) obj1).StartDate compare:((DTTimePeriod *) obj2).StartDate];
}];
}
/**
* Sorts the time periods in the collection by latest start date to earliest start date.
*/
-(void)sortByStartDescending{
[periods sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [((DTTimePeriod *) obj2).StartDate compare:((DTTimePeriod *) obj1).StartDate];
}];
}
/**
* Sorts the time periods in the collection by earliest end date to latest end date.
*/
-(void)sortByEndAscending{
[periods sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [((DTTimePeriod *) obj1).EndDate compare:((DTTimePeriod *) obj2).EndDate];
}];
}
/**
* Sorts the time periods in the collection by latest end date to earliest end date.
*/
-(void)sortByEndDescending{
[periods sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [((DTTimePeriod *) obj2).EndDate compare:((DTTimePeriod *) obj1).EndDate];
}];
}
/**
* Sorts the time periods in the collection by how much time they span. Sorts smallest durations to longest.
*/
-(void)sortByDurationAscending{
[periods sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if (((DTTimePeriod *) obj1).durationInSeconds < ((DTTimePeriod *) obj2).durationInSeconds) {
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
return NSOrderedSame;
}];
}
/**
* Sorts the time periods in the collection by how much time they span. Sorts longest durations to smallest.
*/
-(void)sortByDurationDescending{
[periods sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if (((DTTimePeriod *) obj1).durationInSeconds > ((DTTimePeriod *) obj2).durationInSeconds) {
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
return NSOrderedSame;
}];
}
#pragma mark - Collection Relationship
/**
* Returns an instance of DTTimePeriodCollection with all the time periods in the receiver that fall inside a given time period.
* Time periods of the receiver must have a start date and end date within the closed interval of the period provided to be included.
*
* @param period DTTimePeriod - The time period to check against the receiver's time periods.
*
* @return DTTimePeriodCollection
*/
-(DTTimePeriodCollection *)periodsInside:(DTTimePeriod *)period{
DTTimePeriodCollection *collection = [[DTTimePeriodCollection alloc] init];
if ([period isKindOfClass:[DTTimePeriod class]]) {
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([((DTTimePeriod *) obj) isInside:period]) {
[collection addTimePeriod:obj];
}
}];
}
else {
[DTError throwBadTypeException:period expectedClass:[DTTimePeriod class]];
}
return collection;
}
/**
* Returns an instance of DTTimePeriodCollection with all the time periods in the receiver that intersect a given date.
* Time periods of the receiver must have a start date earlier than or equal to the comparison date and an end date later than or equal to the comparison date to be included
*
* @param date NSDate - The date to check against the receiver's time periods
*
* @return DTTimePeriodCollection
*/
-(DTTimePeriodCollection *)periodsIntersectedByDate:(NSDate *)date{
DTTimePeriodCollection *collection = [[DTTimePeriodCollection alloc] init];
if ([date isKindOfClass:[NSDate class]]) {
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([((DTTimePeriod *) obj) containsDate:date interval:DTTimePeriodIntervalClosed]) {
[collection addTimePeriod:obj];
}
}];
}
else {
[DTError throwBadTypeException:date expectedClass:[NSDate class]];
}
return collection;
}
/**
* Returns an instance of DTTimePeriodCollection with all the time periods in the receiver that intersect a given time period.
* Intersection with the given time period includes other time periods that simply touch it. (i.e. one's start date is equal to another's end date)
*
* @param period DTTimePeriod - The time period to check against the receiver's time periods.
*
* @return DTTimePeriodCollection
*/
-(DTTimePeriodCollection *)periodsIntersectedByPeriod:(DTTimePeriod *)period{
DTTimePeriodCollection *collection = [[DTTimePeriodCollection alloc] init];
if ([period isKindOfClass:[DTTimePeriod class]]) {
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([((DTTimePeriod *) obj) intersects:period]) {
[collection addTimePeriod:obj];
}
}];
}
else {
[DTError throwBadTypeException:period expectedClass:[DTTimePeriod class]];
}
return collection;
}
/**
* Returns an instance of DTTimePeriodCollection with all the time periods in the receiver that overlap a given time period.
* Overlap with the given time period does NOT include other time periods that simply touch it. (i.e. one's start date is equal to another's end date)
*
* @param period DTTimePeriod - The time period to check against the receiver's time periods.
*
* @return DTTimePeriodCollection
*/
-(DTTimePeriodCollection *)periodsOverlappedByPeriod:(DTTimePeriod *)period{
DTTimePeriodCollection *collection = [[DTTimePeriodCollection alloc] init];
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([((DTTimePeriod *) obj) overlapsWith:period]) {
[collection addTimePeriod:obj];
}
}];
return collection;
}
/**
* Returns a BOOL representing whether the receiver is equal to a given DTTimePeriodCollection. Equality requires the start and end dates to be the same, and all time periods to be the same.
*
* If you would like to take the order of the time periods in two collections into consideration, you may do so with the considerOrder BOOL
*
* @param collection DTTimePeriodCollection - The collection to compare with the receiver
* @param considerOrder BOOL - Option for whether to account for the time periods order in the test for equality. YES considers order, NO does not.
*
* @return BOOL
*/
-(BOOL)isEqualToCollection:(DTTimePeriodCollection *)collection considerOrder:(BOOL)considerOrder{
//Check class
if ([collection class] != [DTTimePeriodCollection class]) {
[DTError throwBadTypeException:collection expectedClass:[DTTimePeriodCollection class]];
return NO;
}
//Check group level characteristics for speed
if (![self hasSameCharacteristicsAs:collection]) {
return NO;
}
//Default to equality and look for inequality
__block BOOL isEqual = YES;
if (considerOrder) {
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (![collection[idx] isEqualToPeriod:obj]) {
isEqual = NO;
*stop = YES;
}
}];
}
else {
__block DTTimePeriodCollection *collectionCopy = [collection copy];
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
__block BOOL innerMatch = NO;
__block NSInteger matchIndex = 0; //We will remove matches to account for duplicates and to help speed
for (int ii = 0; ii < collectionCopy.count; ii++) {
if ([obj isEqualToPeriod:collectionCopy[ii]]) {
innerMatch = YES;
matchIndex = ii;
break;
}
}
//If there was a match found, stop
if (!innerMatch) {
isEqual = NO;
*stop = YES;
}
else {
[collectionCopy removeTimePeriodAtIndex:matchIndex];
}
}];
}
return isEqual;
}
#pragma mark - Helper Methods
-(void)updateVariables{
//Set helper variables
__block NSDate *startDate = [NSDate distantFuture];
__block NSDate *endDate = [NSDate distantPast];
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([((DTTimePeriod *) obj).StartDate isEarlierThan:startDate]) {
startDate = ((DTTimePeriod *) obj).StartDate;
}
if ([((DTTimePeriod *) obj).EndDate isLaterThan:endDate]) {
endDate = ((DTTimePeriod *) obj).EndDate;
}
}];
//Make assignments after evaluation
StartDate = startDate;
EndDate = endDate;
}
-(void)setVariablesNil{
//Set helper variables
StartDate = nil;
EndDate = nil;
}
/**
* Returns a new instance of DTTimePeriodCollection that is an exact copy of the receiver, but with differnt memory references, etc.
*
* @return DTTimePeriodCollection
*/
-(DTTimePeriodCollection *)copy{
DTTimePeriodCollection *collection = [DTTimePeriodCollection collection];
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[collection addTimePeriod:[obj copy]];
}];
return collection;
}
@end

62
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodGroup.h

@ -0,0 +1,62 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import <Foundation/Foundation.h>
#import "DTTimePeriod.h"
@interface DTTimePeriodGroup : NSObject {
@protected
NSMutableArray *periods;
NSDate *StartDate;
NSDate *EndDate;
}
@property (nonatomic, readonly) NSDate *StartDate;
@property (nonatomic, readonly) NSDate *EndDate;
//Here we will use object subscripting to help create the illusion of an array
- (id)objectAtIndexedSubscript:(NSUInteger)index; //getter
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index; //setter
#pragma mark - Group Info
-(double)durationInYears;
-(double)durationInWeeks;
-(double)durationInDays;
-(double)durationInHours;
-(double)durationInMinutes;
-(double)durationInSeconds;
-(NSDate *)StartDate;
-(NSDate *)EndDate;
-(NSInteger)count;
#pragma mark - Chain Time Manipulation
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size;
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount;
-(void)shiftLaterWithSize:(DTTimePeriodSize)size;
-(void)shiftLaterWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount;
#pragma mark - Comparison
-(BOOL)hasSameCharacteristicsAs:(DTTimePeriodGroup *)group;
#pragma mark - Updates
-(void)updateVariables;
@end

234
Clocker/Date Tools/DateTools-master/DateTools/DTTimePeriodGroup.m

@ -0,0 +1,234 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTTimePeriodGroup.h"
#import "NSDate+DateTools.h"
@interface DTTimePeriodGroup ()
@end
@implementation DTTimePeriodGroup
-(id) init
{
if (self = [super init]) {
periods = [[NSMutableArray alloc] init];
}
return self;
}
- (id)objectAtIndexedSubscript:(NSUInteger)index
{
return periods[index];
}
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index {
periods[index] = obj;
}
#pragma mark - Group Info
/**
* Returns the duration of the receiver in years
*
* @return NSInteger
*/
-(double)durationInYears {
if (self.StartDate && self.EndDate) {
return [self.StartDate yearsEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in weeks
*
* @return double
*/
-(double)durationInWeeks {
if (self.StartDate && self.EndDate) {
return [self.StartDate weeksEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in days
*
* @return double
*/
-(double)durationInDays {
if (self.StartDate && self.EndDate) {
return [self.StartDate daysEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in hours
*
* @return double
*/
-(double)durationInHours {
if (self.StartDate && self.EndDate) {
return [self.StartDate hoursEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in minutes
*
* @return double
*/
-(double)durationInMinutes {
if (self.StartDate && self.EndDate) {
return [self.StartDate minutesEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the duration of the receiver in seconds
*
* @return double
*/
-(double)durationInSeconds {
if (self.StartDate && self.EndDate) {
return [self.StartDate secondsEarlierThan:self.EndDate];
}
return 0;
}
/**
* Returns the NSDate representing the earliest date in the DTTimePeriodGroup (or subclass)
*
* @return NSDate
*/
-(NSDate *)StartDate{
return StartDate;
}
/**
* Returns the NSDate representing the latest date in the DTTimePeriodGroup (or subclass)
*
* @return NSDate
*/
-(NSDate *)EndDate{
return EndDate;
}
/**
* The total number of DTTimePeriods in the group
*
* @return NSInteger
*/
-(NSInteger)count{
return periods.count;
}
/**
* Returns a BOOL if the receiver and the comparison group have the same metadata (i.e. number of periods, start & end date, etc.)
* Returns YES if they share the same characteristics, otherwise NO
*
* @param group The group to compare with the receiver
*
* @return BOOL
*/
-(BOOL)hasSameCharacteristicsAs:(DTTimePeriodGroup *)group{
//Check characteristics first for speed
if (group.count != self.count) {
return NO;
}
else if (!group.StartDate && !group.EndDate && !self.StartDate && !self.EndDate){
return YES;
}
else if (![group.StartDate isEqualToDate:self.StartDate] || ![group.EndDate isEqualToDate:self.EndDate]){
return NO;
}
return YES;
}
#pragma mark - Chain Time Manipulation
/**
* Shifts all the time periods in the collection to an earlier date by the given size
*
* @param size DTTimePeriodSize - The desired size of the shift
*/
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size{
[self shiftEarlierWithSize:size amount:1];
}
/**
* Shifts all the time periods in the collection to an earlier date by the given size and amount.
* The amount acts as a multiplier to the size (i.e. "2 weeks" or "4 years")
*
* @param size DTTimePeriodSize - The desired size of the shift
* @param amount NSInteger - Multiplier for the size
*/
-(void)shiftEarlierWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount{
if (periods) {
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[((DTTimePeriod *)obj) shiftEarlierWithSize:size amount:amount];
}];
[self updateVariables];
}
}
/**
* Shifts all the time periods in the collection to a later date by the given size
*
* @param size DTTimePeriodSize - The desired size of the shift
*/
-(void)shiftLaterWithSize:(DTTimePeriodSize)size{
[self shiftLaterWithSize:size amount:1];
}
/**
* Shifts all the time periods in the collection to an later date by the given size and amount.
* The amount acts as a multiplier to the size (i.e. "2 weeks" or "4 years")
*
* @param size DTTimePeriodSize - The desired size of the shift
* @param amount NSInteger - Multiplier for the size
*/
-(void)shiftLaterWithSize:(DTTimePeriodSize)size amount:(NSInteger)amount{
if (periods) {
[periods enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[((DTTimePeriod *)obj) shiftLaterWithSize:size amount:amount];
}];
[self updateVariables];
}
}
#pragma mark - Updates
-(void)updateVariables{}
@end

BIN
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ar.lproj/DateTools.strings

Binary file not shown.

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/bg.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "преди %d дена";
/* No comment provided by engineer. */
"%d hours ago" = "преди %d часа";
/* No comment provided by engineer. */
"%d minutes ago" = "преди %d минути";
/* No comment provided by engineer. */
"%d months ago" = "преди %d месеца";
/* No comment provided by engineer. */
"%d seconds ago" = "преди %d секунди";
/* No comment provided by engineer. */
"%d weeks ago" = "преди %d седмици";
/* No comment provided by engineer. */
"%d years ago" = "преди %d години";
/* No comment provided by engineer. */
"A minute ago" = "преди минута";
/* No comment provided by engineer. */
"An hour ago" = "преди час";
/* No comment provided by engineer. */
"Just now" = "току що";
/* No comment provided by engineer. */
"Last month" = "през последния месец";
/* No comment provided by engineer. */
"Last week" = "през последната седмица";
/* No comment provided by engineer. */
"Last year" = "през последната година";
/* No comment provided by engineer. */
"Yesterday" = "вчера";
/* No comment provided by engineer. */
"1 year ago" = "преди 1 година";
/* No comment provided by engineer. */
"1 month ago" = "преди 1 месец";
/* No comment provided by engineer. */
"1 week ago" = "преди 1 седмица";
/* No comment provided by engineer. */
"1 day ago" = "преди 1 ден";
/* No comment provided by engineer. */
"This morning" = "тази сутрин";
/* No comment provided by engineer. */
"This afternoon" = "тази вечер";
/* No comment provided by engineer. */
"Today" = "днес";
/* No comment provided by engineer. */
"This week" = "тази седмица";
/* No comment provided by engineer. */
"This month" = "този месец";
/* No comment provided by engineer. */
"This year" = "тази година";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ca.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "Fa %d dies";
/* No comment provided by engineer. */
"%d hours ago" = "Fa %d hores";
/* No comment provided by engineer. */
"%d minutes ago" = "Fa %d minuts";
/* No comment provided by engineer. */
"%d months ago" = "Fa %d mesos";
/* No comment provided by engineer. */
"%d seconds ago" = "Fa %d segons";
/* No comment provided by engineer. */
"%d weeks ago" = "Fa %d setmanes";
/* No comment provided by engineer. */
"%d years ago" = "Fa %d anys";
/* No comment provided by engineer. */
"A minute ago" = "Fa un minut";
/* No comment provided by engineer. */
"An hour ago" = "Fa una hora";
/* No comment provided by engineer. */
"Just now" = "Fa un moment";
/* No comment provided by engineer. */
"Last month" = "El mes passat";
/* No comment provided by engineer. */
"Last week" = "La setmana passada";
/* No comment provided by engineer. */
"Last year" = "L'any passat";
/* No comment provided by engineer. */
"Yesterday" = "Ahir";
/* No comment provided by engineer. */
"1 year ago" = "Fa un any";
/* No comment provided by engineer. */
"1 month ago" = "Fa un mes";
/* No comment provided by engineer. */
"1 week ago" = "Fa una setmana";
/* No comment provided by engineer. */
"1 day ago" = "Fa un dia";
/* No comment provided by engineer. */
"This morning" = "Aquest matí";
/* No comment provided by engineer. */
"This afternoon" = "Aquesta tarda";
/* No comment provided by engineer. */
"Today" = "Avui";
/* No comment provided by engineer. */
"This week" = "Aquesta setmana";
/* No comment provided by engineer. */
"This month" = "Aquest mes";
/* No comment provided by engineer. */
"This year" = "Aquest any";

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/cs.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "Před %d dny";
/* No comment provided by engineer. */
"%d hours ago" = "Před %d hodinami";
/* No comment provided by engineer. */
"%d minutes ago" = "Před %d minutami";
/* No comment provided by engineer. */
"%d months ago" = "Před %d měsíci";
/* No comment provided by engineer. */
"%d seconds ago" = "Před %d sekundami";
/* No comment provided by engineer. */
"%d weeks ago" = "Před %d týdny";
/* No comment provided by engineer. */
"%d years ago" = "Před %d lety";
/* No comment provided by engineer. */
"A minute ago" = "Před minutou";
/* No comment provided by engineer. */
"An hour ago" = "Před hodinou";
/* No comment provided by engineer. */
"Just now" = "Právě teď";
/* No comment provided by engineer. */
"Last month" = "Minulý měsíc";
/* No comment provided by engineer. */
"Last week" = "Minulý týden";
/* No comment provided by engineer. */
"Last year" = "Minulý rok";
/* No comment provided by engineer. */
"Yesterday" = "Včera";
/* No comment provided by engineer. */
"1 year ago" = "Před rokem";
/* No comment provided by engineer. */
"1 month ago" = "Před měsícem";
/* No comment provided by engineer. */
"1 week ago" = "Před týdnem";
/* No comment provided by engineer. */
"1 day ago" = "Předevčírem";
/* No comment provided by engineer. */
"This morning" = "Dnes dopoledne";
/* No comment provided by engineer. */
"This afternoon" = "Dnes odpoledne";
/* No comment provided by engineer. */
"Today" = "Dnes";
/* No comment provided by engineer. */
"This week" = "Tento týden";
/* No comment provided by engineer. */
"This month" = "Tento měsíc";
/* No comment provided by engineer. */
"This year" = "Letos";
/* Short format for */
"%dy" = "%dr"; // year
"%dM" = "%dM"; // month
"%dw" = "%dt"; // week
"%dd" = "%dd"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/cy.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d diwrnod yn ôl";
/* No comment provided by engineer. */
"%d hours ago" = "%d awr yn ôl";
/* No comment provided by engineer. */
"%d minutes ago" = "%d munud yn ôl";
/* No comment provided by engineer. */
"%d months ago" = "%d mis yn ôl";
/* No comment provided by engineer. */
"%d seconds ago" = "%d eiliad yn ôl";
/* No comment provided by engineer. */
"%d weeks ago" = "%d wythnos yn ôl";
/* No comment provided by engineer. */
"%d years ago" = "%d mlynydd yn ôl";
/* No comment provided by engineer. */
"A minute ago" = "Un munud yn ôl";
/* No comment provided by engineer. */
"An hour ago" = "Un awr yn ôl";
/* No comment provided by engineer. */
"Just now" = "Nawr";
/* No comment provided by engineer. */
"Last month" = "Mis diwethaf";
/* No comment provided by engineer. */
"Last week" = "Wythnos diwethaf";
/* No comment provided by engineer. */
"Last year" = "Llynedd";
/* No comment provided by engineer. */
"Yesterday" = "Ddoe";
/* No comment provided by engineer. */
"1 year ago" = "1 flynydd yn ôl";
/* No comment provided by engineer. */
"1 month ago" = "1 mis yn ôl";
/* No comment provided by engineer. */
"1 week ago" = "1 wythnos yn ôl";
/* No comment provided by engineer. */
"1 day ago" = "1 diwrnod yn ôl";
/* No comment provided by engineer. */
"This morning" = "Y bore ma";
/* No comment provided by engineer. */
"This afternoon" = "Y penwythnos hon";
/* No comment provided by engineer. */
"Today" = "Heddiw";
/* No comment provided by engineer. */
"This week" = "Yr wythnos hon";
/* No comment provided by engineer. */
"This month" = "Y mis hon";
/* No comment provided by engineer. */
"This year" = "Eleni";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/da.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dage siden";
/* No comment provided by engineer. */
"%d hours ago" = "%d timer siden";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minutter siden";
/* No comment provided by engineer. */
"%d months ago" = "%d måneder siden";
/* No comment provided by engineer. */
"%d seconds ago" = "%d sekunder siden";
/* No comment provided by engineer. */
"%d weeks ago" = "%d uger siden";
/* No comment provided by engineer. */
"%d years ago" = "%d år siden";
/* No comment provided by engineer. */
"A minute ago" = "Et minut siden";
/* No comment provided by engineer. */
"An hour ago" = "En time siden";
/* No comment provided by engineer. */
"Just now" = "Lige nu";
/* No comment provided by engineer. */
"Last month" = "Sidste måned";
/* No comment provided by engineer. */
"Last week" = "Sidste uge";
/* No comment provided by engineer. */
"Last year" = "Sidste år";
/* No comment provided by engineer. */
"Yesterday" = "I går";
/* No comment provided by engineer. */
"1 year ago" = "1 år siden";
/* No comment provided by engineer. */
"1 month ago" = "1 måned siden";
/* No comment provided by engineer. */
"1 week ago" = "1 uge siden";
/* No comment provided by engineer. */
"1 day ago" = "1 dag siden";
/* No comment provided by engineer. */
"This morning" = "Her til morgen";
/* No comment provided by engineer. */
"This afternoon" = "Her til eftermiddag";
/* No comment provided by engineer. */
"Today" = "I dag";
/* No comment provided by engineer. */
"This week" = "Denne uge";
/* No comment provided by engineer. */
"This month" = "Denne måned";
/* No comment provided by engineer. */
"This year" = "Dette år";

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/de.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "Vor %d Tagen";
/* No comment provided by engineer. */
"%d hours ago" = "Vor %d Stunden";
/* No comment provided by engineer. */
"%d minutes ago" = "Vor %d Minuten";
/* No comment provided by engineer. */
"%d months ago" = "Vor %d Monaten";
/* No comment provided by engineer. */
"%d seconds ago" = "Vor %d Sekunden";
/* No comment provided by engineer. */
"%d weeks ago" = "Vor %d Wochen";
/* No comment provided by engineer. */
"%d years ago" = "Vor %d Jahren";
/* No comment provided by engineer. */
"A minute ago" = "Vor einer Minute";
/* No comment provided by engineer. */
"An hour ago" = "Vor einer Stunde";
/* No comment provided by engineer. */
"Just now" = "Gerade eben";
/* No comment provided by engineer. */
"Last month" = "Letzten Monat";
/* No comment provided by engineer. */
"Last week" = "Letzte Woche";
/* No comment provided by engineer. */
"Last year" = "Letztes Jahr";
/* No comment provided by engineer. */
"Yesterday" = "Gestern";
/* No comment provided by engineer. */
"1 year ago" = "Vor 1 Jahr";
/* No comment provided by engineer. */
"1 month ago" = "Vor 1 Monat";
/* No comment provided by engineer. */
"1 week ago" = "Vor 1 Woche";
/* No comment provided by engineer. */
"1 day ago" = "Vor 1 Tag";
/* No comment provided by engineer. */
"This morning" = "Heute Morgen";
/* No comment provided by engineer. */
"This afternoon" = "Heute Nachmittag";
/* No comment provided by engineer. */
"Today" = "Heute";
/* No comment provided by engineer. */
"This week" = "Diese Woche";
/* No comment provided by engineer. */
"This month" = "Diesen Monat";
/* No comment provided by engineer. */
"This year" = "Dieses Jahr";
/* Short format for */
"%dy" = "%dJ"; // year
"%dM" = "%dM"; // month
"%dw" = "%dW"; // week
"%dd" = "%dT"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

89
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/en.lproj/DateTools.strings

@ -0,0 +1,89 @@
/* No comment provided by engineer. */
"%d days ago" = "%d days ago";
/* No comment provided by engineer. */
"%d hours ago" = "%d hours ago";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minutes ago";
/* No comment provided by engineer. */
"%d months ago" = "%d months ago";
/* No comment provided by engineer. */
"%d seconds ago" = "%d seconds ago";
/* No comment provided by engineer. */
"%d weeks ago" = "%d weeks ago";
/* No comment provided by engineer. */
"%d years ago" = "%d years ago";
/* No comment provided by engineer. */
"A minute ago" = "A minute ago";
/* No comment provided by engineer. */
"An hour ago" = "An hour ago";
/* No comment provided by engineer. */
"Just now" = "Just now";
/* No comment provided by engineer. */
"Last month" = "Last month";
/* No comment provided by engineer. */
"Last week" = "Last week";
/* No comment provided by engineer. */
"Last year" = "Last year";
/* No comment provided by engineer. */
"Yesterday" = "Yesterday";
/* No comment provided by engineer. */
"1 year ago" = "1 year ago";
/* No comment provided by engineer. */
"1 month ago" = "1 month ago";
/* No comment provided by engineer. */
"1 week ago" = "1 week ago";
/* No comment provided by engineer. */
"1 day ago" = "1 day ago";
/* No comment provided by engineer. */
"1 hour ago" = "1 hour ago";
/* No comment provided by engineer. */
"1 minute ago" = "1 minute ago";
/* No comment provided by engineer. */
"1 second ago" = "1 second ago";
/* No comment provided by engineer. */
"This morning" = "This morning";
/* No comment provided by engineer. */
"This afternoon" = "This afternoon";
/* No comment provided by engineer. */
"Today" = "Today";
/* No comment provided by engineer. */
"This week" = "This week";
/* No comment provided by engineer. */
"This month" = "This month";
/* No comment provided by engineer. */
"This year" = "This year";
/* Short format for */
"%dy" = "%dy"; // year
"%dM" = "%dM"; // month
"%dw" = "%dw"; // week
"%dd" = "%dd"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/es.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "Hace %d días";
/* No comment provided by engineer. */
"%d hours ago" = "Hace %d horas";
/* No comment provided by engineer. */
"%d minutes ago" = "Hace %d minutos";
/* No comment provided by engineer. */
"%d months ago" = "Hace %d meses";
/* No comment provided by engineer. */
"%d seconds ago" = "Hace %d segundos";
/* No comment provided by engineer. */
"%d weeks ago" = "Hace %d semanas";
/* No comment provided by engineer. */
"%d years ago" = "Hace %d años";
/* No comment provided by engineer. */
"A minute ago" = "Hace un minuto";
/* No comment provided by engineer. */
"An hour ago" = "Hace una hora";
/* No comment provided by engineer. */
"Just now" = "Ahora mismo";
/* No comment provided by engineer. */
"Last month" = "El mes pasado";
/* No comment provided by engineer. */
"Last week" = "La semana pasada";
/* No comment provided by engineer. */
"Last year" = "El año pasado";
/* No comment provided by engineer. */
"Yesterday" = "Ayer";
/* No comment provided by engineer. */
"1 year ago" = "Hace un año";
/* No comment provided by engineer. */
"1 month ago" = "Hace un mes";
/* No comment provided by engineer. */
"1 week ago" = "Hace una semana";
/* No comment provided by engineer. */
"1 day ago" = "Hace un día";
/* No comment provided by engineer. */
"This morning" = "Esta mañana";
/* No comment provided by engineer. */
"This afternoon" = "Esta tarde";
/* No comment provided by engineer. */
"Today" = "Hoy";
/* No comment provided by engineer. */
"This week" = "Esta semana";
/* No comment provided by engineer. */
"This month" = "Este mes";
/* No comment provided by engineer. */
"This year" = "Este año";
/* Short format for */
"%dy" = "%da"; // year
"%dM" = "%dM"; // month
"%dw" = "%dS"; // week
"%dd" = "%dd"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/eu.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "Orain dela %d egun";
/* No comment provided by engineer. */
"%d hours ago" = "Orain dela %d ordu";
/* No comment provided by engineer. */
"%d minutes ago" = "Orain dela %d minutu";
/* No comment provided by engineer. */
"%d months ago" = "Orain dela %d hile";
/* No comment provided by engineer. */
"%d seconds ago" = "Orain dela %d segundu";
/* No comment provided by engineer. */
"%d weeks ago" = "Orain dela %d aste";
/* No comment provided by engineer. */
"%d years ago" = "Orain dela %d urte";
/* No comment provided by engineer. */
"A minute ago" = "Orain dela minutu bat";
/* No comment provided by engineer. */
"An hour ago" = "Orain dela ordu bat";
/* No comment provided by engineer. */
"Just now" = "Oraintxe bertan";
/* No comment provided by engineer. */
"Last month" = "Pasa den hilean";
/* No comment provided by engineer. */
"Last week" = "Pasa den astean";
/* No comment provided by engineer. */
"Last year" = "Pasa den urtean";
/* No comment provided by engineer. */
"Yesterday" = "Atzo";
/* No comment provided by engineer. */
"1 year ago" = "Orain dela urte bat";
/* No comment provided by engineer. */
"1 month ago" = "Orain dela hile bat";
/* No comment provided by engineer. */
"1 week ago" = "Orain dela aste bat";
/* No comment provided by engineer. */
"1 day ago" = "Orain dela egun bat";
/* No comment provided by engineer. */
"This morning" = "Gaur goizean";
/* No comment provided by engineer. */
"This afternoon" = "Gaur arratsaldean";
/* No comment provided by engineer. */
"Today" = "Gaur";
/* No comment provided by engineer. */
"This week" = "Aste honetan";
/* No comment provided by engineer. */
"This month" = "Hile honetan";
/* No comment provided by engineer. */
"This year" = "Urte honetan";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/fi.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d päivää sitten";
/* No comment provided by engineer. */
"%d hours ago" = "%d tuntia sitten";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minuuttia sitten";
/* No comment provided by engineer. */
"%d months ago" = "%d kuukautta sitten";
/* No comment provided by engineer. */
"%d seconds ago" = "%d sekuntia sitten";
/* No comment provided by engineer. */
"%d weeks ago" = "%d viikkoa sitten";
/* No comment provided by engineer. */
"%d years ago" = "%d vuotta sitten";
/* No comment provided by engineer. */
"A minute ago" = "Minuutti sitten";
/* No comment provided by engineer. */
"An hour ago" = "Tunti sitten";
/* No comment provided by engineer. */
"Just now" = "Juuri äsken";
/* No comment provided by engineer. */
"Last month" = "Viime kuussa";
/* No comment provided by engineer. */
"Last week" = "Viime viikolla";
/* No comment provided by engineer. */
"Last year" = "Viime vuonna";
/* No comment provided by engineer. */
"Yesterday" = "Eilen";
/* No comment provided by engineer. */
"1 year ago" = "Vuosi sitten";
/* No comment provided by engineer. */
"1 month ago" = "Kuukausi sitten";
/* No comment provided by engineer. */
"1 week ago" = "Viikko sitten";
/* No comment provided by engineer. */
"1 day ago" = "Vuorokausi sitten";
/* No comment provided by engineer. */
"This morning" = "Tänä aamuna";
/* No comment provided by engineer. */
"This afternoon" = "Tänä iltapäivänä";
/* No comment provided by engineer. */
"Today" = "Tänään";
/* No comment provided by engineer. */
"This week" = "Tällä viikolla";
/* No comment provided by engineer. */
"This month" = "Tässä kuussa";
/* No comment provided by engineer. */
"This year" = "Tänä vuonna";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/fr.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "Il y a %d jours";
/* No comment provided by engineer. */
"%d hours ago" = "Il y a %d heures";
/* No comment provided by engineer. */
"%d minutes ago" = "Il y a %d minutes";
/* No comment provided by engineer. */
"%d months ago" = "Il y a %d mois";
/* No comment provided by engineer. */
"%d seconds ago" = "Il y a %d secondes";
/* No comment provided by engineer. */
"%d weeks ago" = "Il y a %d semaines";
/* No comment provided by engineer. */
"%d years ago" = "Il y a %d ans";
/* No comment provided by engineer. */
"A minute ago" = "Il y a une minute";
/* No comment provided by engineer. */
"An hour ago" = "Il y a une heure";
/* No comment provided by engineer. */
"Just now" = "A l'instant";
/* No comment provided by engineer. */
"Last month" = "Le mois dernier";
/* No comment provided by engineer. */
"Last week" = "La semaine dernière";
/* No comment provided by engineer. */
"Last year" = "L'année dernière";
/* No comment provided by engineer. */
"Yesterday" = "Hier";
/* No comment provided by engineer. */
"1 year ago" = "Il y a 1 an";
/* No comment provided by engineer. */
"1 month ago" = "Il y a 1 mois";
/* No comment provided by engineer. */
"1 week ago" = "Il y a 1 semaine";
/* No comment provided by engineer. */
"1 day ago" = "Il y a 1 jour";
/* No comment provided by engineer. */
"This morning" = "Ce matin";
/* No comment provided by engineer. */
"This afternoon" = "Cet après-midi";
/* No comment provided by engineer. */
"Today" = "Aujourd'hui";
/* No comment provided by engineer. */
"This week" = "Cette semaine";
/* No comment provided by engineer. */
"This month" = "Ce mois-ci";
/* No comment provided by engineer. */
"This year" = "Cette année";

BIN
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/gre.lproj/DateTools.strings

Binary file not shown.

89
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/gu.lproj/DateTools.strings

@ -0,0 +1,89 @@
/* No comment provided by engineer. */
"%d days ago" = "%d દિવસ પહ";
/* No comment provided by engineer. */
"%d hours ago" = "%d કલક પહ";
/* No comment provided by engineer. */
"%d minutes ago" = "%d મિિટ પહ";
/* No comment provided by engineer. */
"%d months ago" = "%d મહિ પહ";
/* No comment provided by engineer. */
"%d seconds ago" = "%d સકનડ પહ";
/* No comment provided by engineer. */
"%d weeks ago" = "%d અઠવિ પહ";
/* No comment provided by engineer. */
"%d years ago" = "%d વરષ પહ";
/* No comment provided by engineer. */
"A minute ago" = "એક મિિટ પહ";
/* No comment provided by engineer. */
"An hour ago" = "એક કલક પહ";
/* No comment provided by engineer. */
"Just now" = "હમણ";
/* No comment provided by engineer. */
"Last month" = "ગય મહિ";
/* No comment provided by engineer. */
"Last week" = "ગય અઠવિ";
/* No comment provided by engineer. */
"Last year" = "ગય વર";
/* No comment provided by engineer. */
"Yesterday" = "ગઈ ક";
/* No comment provided by engineer. */
"1 year ago" = "1 વરષ પહ";
/* No comment provided by engineer. */
"1 month ago" = "1 મહિ પહ";
/* No comment provided by engineer. */
"1 week ago" = "1 અઠવિ પહ";
/* No comment provided by engineer. */
"1 day ago" = "1 દિવસ પહ";
/* No comment provided by engineer. */
"1 hour ago" = "1 કલક પહ";
/* No comment provided by engineer. */
"1 minute ago" = "1 મિિટ પહ";
/* No comment provided by engineer. */
"1 second ago" = "1 સકનડ પહ";
/* No comment provided by engineer. */
"This morning" = "આ સવ";
/* No comment provided by engineer. */
"This afternoon" = "આજ બપ";
/* No comment provided by engineer. */
"Today" = "આજ";
/* No comment provided by engineer. */
"This week" = "આ અઠવિ";
/* No comment provided by engineer. */
"This month" = "આ મહિ";
/* No comment provided by engineer. */
"This year" = "આ વર";
/* Short format for */
"%dy" = "%dy"; // year
"%dM" = "%dM"; // month
"%dw" = "%dw"; // week
"%dd" = "%dd"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/he.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "לפני %d ימים";
/* No comment provided by engineer. */
"%d hours ago" = "לפני %d שעות";
/* No comment provided by engineer. */
"%d minutes ago" = "לפני %d דקות";
/* No comment provided by engineer. */
"%d months ago" = "לפני %d חודשים";
/* No comment provided by engineer. */
"%d seconds ago" = "לפני %d שניות";
/* No comment provided by engineer. */
"%d weeks ago" = "לפני %d שבועות";
/* No comment provided by engineer. */
"%d years ago" = "לפני %d שנים";
/* No comment provided by engineer. */
"A minute ago" = "לפני דקה";
/* No comment provided by engineer. */
"An hour ago" = "לפני שעה";
/* No comment provided by engineer. */
"Just now" = "ממש עכשיו";
/* No comment provided by engineer. */
"Last month" = "בחודש שעבר";
/* No comment provided by engineer. */
"Last week" = "בשבוע שעבר";
/* No comment provided by engineer. */
"Last year" = "בשנה שעברה";
/* No comment provided by engineer. */
"Yesterday" = "אתמול";
/* No comment provided by engineer. */
"1 year ago" = "לפני שנה";
/* No comment provided by engineer. */
"1 month ago" = "לפני חודש";
/* No comment provided by engineer. */
"1 week ago" = "לפני שבוע";
/* No comment provided by engineer. */
"1 day ago" = "לפני יום";
/* No comment provided by engineer. */
"This morning" = "הבוקר";
/* No comment provided by engineer. */
"This afternoon" = "בצהריים";
/* No comment provided by engineer. */
"Today" = "היום";
/* No comment provided by engineer. */
"This week" = "השבוע";
/* No comment provided by engineer. */
"This month" = "החודש";
/* No comment provided by engineer. */
"This year" = "השנה";

89
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/hi.lproj/DateTools.strings

@ -0,0 +1,89 @@
/* No comment provided by engineer. */
"%d days ago" = "%d दिन पहल";
/* No comment provided by engineer. */
"%d hours ago" = "%d घ पहल";
/* No comment provided by engineer. */
"%d minutes ago" = "%d मिनट पहल";
/* No comment provided by engineer. */
"%d months ago" = "%d महन पहल";
/* No comment provided by engineer. */
"%d seconds ago" = "%d सड पहल";
/* No comment provided by engineer. */
"%d weeks ago" = "%d हफ पहल";
/* No comment provided by engineer. */
"%d years ago" = "%d सल पहल";
/* No comment provided by engineer. */
"A minute ago" = "एक मिनट पहल";
/* No comment provided by engineer. */
"An hour ago" = "एक घ पहल";
/* No comment provided by engineer. */
"Just now" = "बस अभ";
/* No comment provided by engineer. */
"Last month" = "पिछल मह";
/* No comment provided by engineer. */
"Last week" = "पिछल हफ";
/* No comment provided by engineer. */
"Last year" = "पिछलल";
/* No comment provided by engineer. */
"Yesterday" = "कल";
/* No comment provided by engineer. */
"1 year ago" = "1 सल पहल";
/* No comment provided by engineer. */
"1 month ago" = "1 मह पहल";
/* No comment provided by engineer. */
"1 week ago" = "1 हफ पहल";
/* No comment provided by engineer. */
"1 day ago" = "1 दिन पहल";
/* No comment provided by engineer. */
"1 hour ago" = "1 घ पहल";
/* No comment provided by engineer. */
"1 minute ago" = "1 मिनट पहल";
/* No comment provided by engineer. */
"1 second ago" = "1 सड पहल";
/* No comment provided by engineer. */
"This morning" = "आज सबह";
/* No comment provided by engineer. */
"This afternoon" = "यह दपहर";
/* No comment provided by engineer. */
"Today" = "आज";
/* No comment provided by engineer. */
"This week" = "इस सपह";
/* No comment provided by engineer. */
"This month" = "इस मह";
/* No comment provided by engineer. */
"This year" = "इस सल";
/* Short format for */
"%dy" = "%dy"; // year
"%dM" = "%dM"; // month
"%dw" = "%dw"; // week
"%dd" = "%dd"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

44
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/hr.lproj/DateTools.strings

@ -0,0 +1,44 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dana";
/* No comment provided by engineer. */
"%d hours ago" = "%d prime sati";
/* No comment provided by engineer. */
"%d minutes ago" = "%d prije minuta";
/* No comment provided by engineer. */
"%d months ago" = "%d prije nekoliko mjeseci";
/* No comment provided by engineer. */
"%d seconds ago" = "%d sekunde prije";
/* No comment provided by engineer. */
"%d weeks ago" = "%d prije nekoliko tjedana";
/* No comment provided by engineer. */
"%d years ago" = "%d prije nekoliko godina";
/* No comment provided by engineer. */
"A minute ago" = "prije minute";
/* No comment provided by engineer. */
"An hour ago" = "prije sat vremena";
/* No comment provided by engineer. */
"Just now" = "upravo sada";
/* No comment provided by engineer. */
"Last month" = "prosli mjesec";
/* No comment provided by engineer. */
"Last week" = "prosli tjedan";
/* No comment provided by engineer. */
"Last year" = "prosle godine";
/* No comment provided by engineer. */
"Yesterday" = "jucer";
/* No comment provided by engineer. */
"1 year ago" = "Prije 1 godina";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/hu.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d napja";
/* No comment provided by engineer. */
"%d hours ago" = "%d órája";
/* No comment provided by engineer. */
"%d minutes ago" = "%d perce";
/* No comment provided by engineer. */
"%d months ago" = "%d hónapja";
/* No comment provided by engineer. */
"%d seconds ago" = "%d másodperce";
/* No comment provided by engineer. */
"%d weeks ago" = "%d hete";
/* No comment provided by engineer. */
"%d years ago" = "%d éve";
/* No comment provided by engineer. */
"A minute ago" = "Egy perccel ezelőtt";
/* No comment provided by engineer. */
"An hour ago" = "Egy órával ezelőtt";
/* No comment provided by engineer. */
"Just now" = "Az imént";
/* No comment provided by engineer. */
"Last month" = "Az előző hónapban";
/* No comment provided by engineer. */
"Last week" = "Az előző héten";
/* No comment provided by engineer. */
"Last year" = "Tavaly";
/* No comment provided by engineer. */
"Yesterday" = "Tegnap";
/* No comment provided by engineer. */
"1 year ago" = "Tavaly";
/* No comment provided by engineer. */
"1 month ago" = "Egy hónapja";
/* No comment provided by engineer. */
"1 week ago" = "Egy hete";
/* No comment provided by engineer. */
"1 day ago" = "Tegnap";
/* No comment provided by engineer. */
"This morning" = "Ma reggel";
/* No comment provided by engineer. */
"This afternoon" = "Ma délután";
/* No comment provided by engineer. */
"Today" = "Ma";
/* No comment provided by engineer. */
"This week" = "Ezen a héten";
/* No comment provided by engineer. */
"This month" = "Ebben a hónapban";
/* No comment provided by engineer. */
"This year" = "Idén";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/id.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d hari yang lalu";
/* No comment provided by engineer. */
"%d hours ago" = "%d jam yang lalu";
/* No comment provided by engineer. */
"%d minutes ago" = "%d menit yang lalu";
/* No comment provided by engineer. */
"%d months ago" = "%d bulan yang lalu";
/* No comment provided by engineer. */
"%d seconds ago" = "%d detik yang lalu";
/* No comment provided by engineer. */
"%d weeks ago" = "%d minggu yang lalu";
/* No comment provided by engineer. */
"%d years ago" = "%d tahun yang lalu";
/* No comment provided by engineer. */
"A minute ago" = "Semenit yang lalu";
/* No comment provided by engineer. */
"An hour ago" = "Sejam yang lalu";
/* No comment provided by engineer. */
"Just now" = "Sekarang";
/* No comment provided by engineer. */
"Last month" = "Bulan lalu";
/* No comment provided by engineer. */
"Last week" = "Minggu lalu";
/* No comment provided by engineer. */
"Last year" = "Tahun lalu";
/* No comment provided by engineer. */
"Yesterday" = "Kemarin";
/* No comment provided by engineer. */
"1 year ago" = "1 tahun yang lalu";
/* No comment provided by engineer. */
"1 month ago" = "1 bulan yang lalu";
/* No comment provided by engineer. */
"1 week ago" = "1 minggu yang lalu";
/* No comment provided by engineer. */
"1 day ago" = "1 hari yang lalu";
/* No comment provided by engineer. */
"This morning" = "Pagi ini";
/* No comment provided by engineer. */
"This afternoon" = "Sore ini";
/* No comment provided by engineer. */
"Today" = "Hari ini";
/* No comment provided by engineer. */
"This week" = "Minggu ini";
/* No comment provided by engineer. */
"This month" = "Bulan ini";
/* No comment provided by engineer. */
"This year" = "Tahun ini";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/is.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dögum síðan";
/* No comment provided by engineer. */
"%d hours ago" = "%d klst. síðan";
/* No comment provided by engineer. */
"%d minutes ago" = "%d mínútum síðan";
/* No comment provided by engineer. */
"%d months ago" = "%d mánuðum síðan";
/* No comment provided by engineer. */
"%d seconds ago" = "%d sekúndum síðan";
/* No comment provided by engineer. */
"%d weeks ago" = "%d vikum síðan";
/* No comment provided by engineer. */
"%d years ago" = "%d árum síðan";
/* No comment provided by engineer. */
"A minute ago" = "Einni mínútu síðan";
/* No comment provided by engineer. */
"An hour ago" = "Einni klst. síðan";
/* No comment provided by engineer. */
"Just now" = "Rétt í þessu";
/* No comment provided by engineer. */
"Last month" = "Í síðasta mánuði";
/* No comment provided by engineer. */
"Last week" = "Í síðustu viku";
/* No comment provided by engineer. */
"Last year" = "Á síðasta ári";
/* No comment provided by engineer. */
"Yesterday" = "Í gær";
/* No comment provided by engineer. */
"1 year ago" = "1 ári síðan";
/* No comment provided by engineer. */
"1 month ago" = "1 mánuði síðan";
/* No comment provided by engineer. */
"1 week ago" = "1 viku síðan";
/* No comment provided by engineer. */
"1 day ago" = "1 degi síðan";
/* No comment provided by engineer. */
"This morning" = "Í morgun";
/* No comment provided by engineer. */
"This afternoon" = "Síðdegis";
/* No comment provided by engineer. */
"Today" = "Í dag";
/* No comment provided by engineer. */
"This week" = "Í þessari viku";
/* No comment provided by engineer. */
"This month" = "Í þessum mánuði";
/* No comment provided by engineer. */
"This year" = "Á þessu ári";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/it.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d giorni fa";
/* No comment provided by engineer. */
"%d hours ago" = "%d ore fa";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minuti fa";
/* No comment provided by engineer. */
"%d months ago" = "%d mesi fa";
/* No comment provided by engineer. */
"%d seconds ago" = "%d secondi fa";
/* No comment provided by engineer. */
"%d weeks ago" = "%d settimane fa";
/* No comment provided by engineer. */
"%d years ago" = "%d anni fa";
/* No comment provided by engineer. */
"A minute ago" = "Un minuto fa";
/* No comment provided by engineer. */
"An hour ago" = "Un'ora fa";
/* No comment provided by engineer. */
"Just now" = "Ora";
/* No comment provided by engineer. */
"Last month" = "Il mese scorso";
/* No comment provided by engineer. */
"Last week" = "La settimana scorsa";
/* No comment provided by engineer. */
"Last year" = "L'anno scorso";
/* No comment provided by engineer. */
"Yesterday" = "Ieri";
/* No comment provided by engineer. */
"1 year ago" = "Un anno fa";
/* No comment provided by engineer. */
"1 month ago" = "Un mese fa";
/* No comment provided by engineer. */
"1 week ago" = "Una settimana fa";
/* No comment provided by engineer. */
"1 day ago" = "Un giorno fa";
/* No comment provided by engineer. */
"This morning" = "Questa mattina";
/* No comment provided by engineer. */
"This afternoon" = "Questo pomeriggio";
/* No comment provided by engineer. */
"Today" = "Oggi";
/* No comment provided by engineer. */
"This week" = "Questa settimana";
/* No comment provided by engineer. */
"This month" = "Questo mese";
/* No comment provided by engineer. */
"This year" = "Quest'anno";

90
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ja.lproj/DateTools.strings

@ -0,0 +1,90 @@
/* No comment provided by engineer. */
"%d days ago" = "%d日前";
/* No comment provided by engineer. */
"%d hours ago" = "%d時間前";
/* No comment provided by engineer. */
"%d minutes ago" = "%d分前";
/* No comment provided by engineer. */
"%d months ago" = "%dヶ月前";
/* No comment provided by engineer. */
"%d seconds ago" = "%d秒前";
/* No comment provided by engineer. */
"%d weeks ago" = "%d週間前";
/* No comment provided by engineer. */
"%d years ago" = "%d年前";
/* No comment provided by engineer. */
"A minute ago" = "1分前";
/* No comment provided by engineer. */
"An hour ago" = "1時間前";
/* No comment provided by engineer. */
"Just now" = "たった今";
/* No comment provided by engineer. */
"Last month" = "先月";
/* No comment provided by engineer. */
"Last week" = "先週";
/* No comment provided by engineer. */
"Last year" = "去年";
/* No comment provided by engineer. */
"Yesterday" = "昨日";
/* No comment provided by engineer. */
"1 year ago" = "1年前";
/* No comment provided by engineer. */
"1 month ago" = "1ヶ月前";
/* No comment provided by engineer. */
"1 week ago" = "1週間前";
/* No comment provided by engineer. */
"1 day ago" = "1日前";
/* No comment provided by engineer. */
"1 hour ago" = "1時間前";
/* No comment provided by engineer. */
"1 minute ago" = "1分前";
/* No comment provided by engineer. */
"1 second ago" = "1秒前";
/* No comment provided by engineer. */
"This morning" = "午前";
/* No comment provided by engineer. */
"This afternoon" = "午後";
/* No comment provided by engineer. */
"Today" = "今日";
/* No comment provided by engineer. */
"This week" = "今週";
/* No comment provided by engineer. */
"This month" = "今月";
/* No comment provided by engineer. */
"This year" = "今年";
/* Short format for */
"%dy" = "%d年"; // year
"%dM" = "%d月"; // month
"%dw" = "%d週"; // week
"%dd" = "%d日"; // day
"%dh" = "%d時間"; // hour
"%dm" = "%d分"; // minute
"%ds" = "%d秒"; // second

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ko.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d일전";
/* No comment provided by engineer. */
"%d hours ago" = "%d시간전";
/* No comment provided by engineer. */
"%d minutes ago" = "%d분전";
/* No comment provided by engineer. */
"%d months ago" = "%d개월전";
/* No comment provided by engineer. */
"%d seconds ago" = "%d초전";
/* No comment provided by engineer. */
"%d weeks ago" = "%d주전";
/* No comment provided by engineer. */
"%d years ago" = "%d년전";
/* No comment provided by engineer. */
"A minute ago" = "1분전";
/* No comment provided by engineer. */
"An hour ago" = "1시간전";
/* No comment provided by engineer. */
"Just now" = "방금전";
/* No comment provided by engineer. */
"Last month" = "지난달";
/* No comment provided by engineer. */
"Last week" = "지난주";
/* No comment provided by engineer. */
"Last year" = "지난해";
/* No comment provided by engineer. */
"Yesterday" = "어제";
/* No comment provided by engineer. */
"1 year ago" = "1년전";
/* No comment provided by engineer. */
"1 month ago" = "1개월전";
/* No comment provided by engineer. */
"1 week ago" = "1주전";
/* No comment provided by engineer. */
"1 day ago" = "1일전";
/* No comment provided by engineer. */
"This morning" = "오늘 아침";
/* No comment provided by engineer. */
"This afternoon" = "오늘 오후";
/* No comment provided by engineer. */
"Today" = "오늘";
/* No comment provided by engineer. */
"This week" = "이번주";
/* No comment provided by engineer. */
"This month" = "이번달";
/* No comment provided by engineer. */
"This year" = "올해";

24
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/lv.lproj/DateTools.strings

@ -0,0 +1,24 @@
"1 year ago" = "Pirms gada";
"1 month ago" = "Pirms mēneša";
"1 week ago" = "Pirms nedēļas";
"1 day ago" = "Pirms dienas";
"A minute ago" = "Pirms minūtes";
"An hour ago" = "Pirms stundas";
"Last month" = "Pagājušajā mēnesī";
"Last week" = "Pagājušajā nedēļā";
"Last year" = "Pagājušajā gadā";
"Just now" = "Tikko";
"Today" = "Šodien";
"Yesterday" = "Vakar";
"This morning" = "Šorīt";
"This afternoon" = "Pēcpusdienā";
"This week" = "Šonedēļ";
"This month" = "Šomēnes";
"This year" = "Šogad";
"%d seconds ago" = "Pirms %d sekundēm";
"%d minutes ago" = "Pirms %d minūtēm";
"%d hours ago" = "Pirms %d stundām";
"%d days ago" = "Pirms %d dienām";
"%d weeks ago" = "Pirms %d nedēļām";
"%d months ago" = "Pirms %d mēnešiem";
"%d years ago" = "Pirms %d gadiem";

89
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ms.lproj/DateTools.strings

@ -0,0 +1,89 @@
/* No comment provided by engineer. */
"%d days ago" = "%d hari yang lepas";
/* No comment provided by engineer. */
"%d hours ago" = "%d jam yang lepas";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minit yang lepas";
/* No comment provided by engineer. */
"%d months ago" = "%d bulan yang lepas";
/* No comment provided by engineer. */
"%d seconds ago" = "%d saat yang lepas";
/* No comment provided by engineer. */
"%d weeks ago" = "%d minggu yang lepas";
/* No comment provided by engineer. */
"%d years ago" = "%d tahun yang lepas";
/* No comment provided by engineer. */
"A minute ago" = "Seminit yang lepas";
/* No comment provided by engineer. */
"An hour ago" = "Sejam yang lepas";
/* No comment provided by engineer. */
"Just now" = "Sebentar tadi";
/* No comment provided by engineer. */
"Last month" = "Bulan lepas";
/* No comment provided by engineer. */
"Last week" = "Minggu lepas";
/* No comment provided by engineer. */
"Last year" = "Tahun lepas";
/* No comment provided by engineer. */
"Yesterday" = "Semalam";
/* No comment provided by engineer. */
"1 year ago" = "1 tahun lepas";
/* No comment provided by engineer. */
"1 month ago" = "1 bulan lepas";
/* No comment provided by engineer. */
"1 week ago" = "1 minggu lepas";
/* No comment provided by engineer. */
"1 day ago" = "1 hari lepas";
/* No comment provided by engineer. */
"1 hour ago" = "1 jam lepas";
/* No comment provided by engineer. */
"1 minute ago" = "1 minit lepas";
/* No comment provided by engineer. */
"1 second ago" = "1 saat lepas";
/* No comment provided by engineer. */
"This morning" = "Pagi ini";
/* No comment provided by engineer. */
"This afternoon" = "Petang ini";
/* No comment provided by engineer. */
"Today" = "Hari ini";
/* No comment provided by engineer. */
"This week" = "Minggu ini";
/* No comment provided by engineer. */
"This month" = "Bulan ini";
/* No comment provided by engineer. */
"This year" = "Tahun ini";
/* Short format for */
"%dy" = "%dy"; // year
"%dM" = "%dM"; // month
"%dw" = "%dw"; // week
"%dd" = "%dd"; // day
"%dh" = "%dh"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

125
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/nb.lproj/DateTools.strings

@ -0,0 +1,125 @@
/*
RULES:
Assume value for (seconds, hours, minutes, days, weeks, months or years) is XXXY, Y is last digit, XY is last two digits;
*/
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d days ago" = "%d dager siden";
/* If Y != 1 AND Y < 5; */
"%d _days ago" = "%d dager siden";
/* If Y == 1; */
"%d __days ago" = "%d dag siden";
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d hours ago" = "%d timer siden";
/* If Y != 1 AND Y < 5; */
"%d _hours ago" = "%d timer siden";
/* If Y == 1; */
"%d __hours ago" = "%d time siden";
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d minutes ago" = "%d minutter siden";
/* If Y != 1 AND Y < 5; */
"%d _minutes ago" = "%d minutter siden";
/* If Y == 1; */
"%d __minutes ago" = "%d minutt siden";
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d months ago" = "%d måneder siden";
/* If Y != 1 AND Y < 5; */
"%d _months ago" = "%d måneder siden";
/* If Y == 1; */
"%d __months ago" = "%d måned siden";
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d seconds ago" = "%d sekunder siden";
/* If Y != 1 AND Y < 5; */
"%d _seconds ago" = "%d sekunder siden";
/* If Y == 1; */
"%d __seconds ago" = "%d sekund siden";
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d weeks ago" = "%d uker siden";
/* If Y != 1 AND Y < 5; */
"%d _weeks ago" = "%d uker siden";
/* If Y == 1; */
"%d __weeks ago" = "%d uke siden";
/* Y ==0 OR Y > 4 OR XY == 11; */
"%d years ago" = "%d år siden";
/* If Y != 1 AND Y < 5; */
"%d _years ago" = "%d år siden";
/* If Y == 1; */
"%d __years ago" = "%d år siden";
/* No comment provided by engineer. */
"A minute ago" = "Et minutt siden";
/* No comment provided by engineer. */
"An hour ago" = "En time siden";
/* No comment provided by engineer. */
"Just now" = "Nå";
/* No comment provided by engineer. */
"Last month" = "For en måned siden";
/* No comment provided by engineer. */
"Last week" = "For en uke siden";
/* No comment provided by engineer. */
"Last year" = "For et år siden";
/* No comment provided by engineer. */
"Yesterday" = "I går";
/* No comment provided by engineer. */
"1 year ago" = "1 år siden";
/* No comment provided by engineer. */
"1 month ago" = "1 måned siden";
/* No comment provided by engineer. */
"1 week ago" = "1 uke siden";
/* No comment provided by engineer. */
"1 day ago" = "1 dag siden";
/* No comment provided by engineer. */
"This morning" = "Denne morgenen";
/* No comment provided by engineer. */
"This afternoon" = "I ettermiddag";
/* No comment provided by engineer. */
"Today" = "I dag";
/* No comment provided by engineer. */
"This week" = "Denne uken";
/* No comment provided by engineer. */
"This month" = "Denne måneden";
/* No comment provided by engineer. */
"This year" = "Dette året";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/nl.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dagen geleden";
/* No comment provided by engineer. */
"%d hours ago" = "%d uur geleden";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minuten geleden";
/* No comment provided by engineer. */
"%d months ago" = "%d maanden geleden";
/* No comment provided by engineer. */
"%d seconds ago" = "%d seconden geleden";
/* No comment provided by engineer. */
"%d weeks ago" = "%d weken geleden";
/* No comment provided by engineer. */
"%d years ago" = "%d jaar geleden";
/* No comment provided by engineer. */
"A minute ago" = "Een minuut geleden";
/* No comment provided by engineer. */
"An hour ago" = "Een uur geleden";
/* No comment provided by engineer. */
"Just now" = "Zojuist";
/* No comment provided by engineer. */
"Last month" = "Vorige maand";
/* No comment provided by engineer. */
"Last week" = "Vorige week";
/* No comment provided by engineer. */
"Last year" = "Vorig jaar";
/* No comment provided by engineer. */
"Yesterday" = "Gisteren";
/* No comment provided by engineer. */
"1 year ago" = "1 jaar geleden";
/* No comment provided by engineer. */
"1 month ago" = "1 maand geleden";
/* No comment provided by engineer. */
"1 week ago" = "1 week geleden";
/* No comment provided by engineer. */
"1 day ago" = "1 dag geleden";
/* No comment provided by engineer. */
"This morning" = "Vanmorgen";
/* No comment provided by engineer. */
"This afternoon" = "Vanmiddag";
/* No comment provided by engineer. */
"Today" = "Vandaag";
/* No comment provided by engineer. */
"This week" = "Deze week";
/* No comment provided by engineer. */
"This month" = "Deze maand";
/* No comment provided by engineer. */
"This year" = "Dit jaar";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/pl.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dni temu";
/* No comment provided by engineer. */
"%d hours ago" = "%d godzin(y) temu";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minut(y) temu";
/* No comment provided by engineer. */
"%d months ago" = "%d miesiące/-y temu";
/* No comment provided by engineer. */
"%d seconds ago" = "%d sekund(y) temu";
/* No comment provided by engineer. */
"%d weeks ago" = "%d tygodni(e) temu";
/* No comment provided by engineer. */
"%d years ago" = "%d lat(a) temu";
/* No comment provided by engineer. */
"A minute ago" = "Minutę temu";
/* No comment provided by engineer. */
"An hour ago" = "Godzinę temu";
/* No comment provided by engineer. */
"Just now" = "W tej chwili";
/* No comment provided by engineer. */
"Last month" = "W zeszłym miesiącu";
/* No comment provided by engineer. */
"Last week" = "W zeszłym tygodniu";
/* No comment provided by engineer. */
"Last year" = "W zeszłym roku";
/* No comment provided by engineer. */
"Yesterday" = "Wczoraj";
/* No comment provided by engineer. */
"1 year ago" = "1 rok temu";
/* No comment provided by engineer. */
"1 month ago" = "1 miesiąc temu";
/* No comment provided by engineer. */
"1 week ago" = "1 tydzień temu";
/* No comment provided by engineer. */
"1 day ago" = "1 dzień temu";
/* No comment provided by engineer. */
"This morning" = "Dziś rano";
/* No comment provided by engineer. */
"This afternoon" = "Dziś po południu";
/* No comment provided by engineer. */
"Today" = "Dzisiaj";
/* No comment provided by engineer. */
"This week" = "W tym tygodniu";
/* No comment provided by engineer. */
"This month" = "W tym miesiącu";
/* No comment provided by engineer. */
"This year" = "W tym roku";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/pt-PT.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dias atrás";
/* No comment provided by engineer. */
"%d hours ago" = "%d horas atrás";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minutos atrás";
/* No comment provided by engineer. */
"%d months ago" = "%d meses atrás";
/* No comment provided by engineer. */
"%d seconds ago" = "%d segundos atrás";
/* No comment provided by engineer. */
"%d weeks ago" = "%d semanas atrás";
/* No comment provided by engineer. */
"%d years ago" = "%d anos atrás";
/* No comment provided by engineer. */
"A minute ago" = "Um minuto atrás";
/* No comment provided by engineer. */
"An hour ago" = "Uma hora atrás";
/* No comment provided by engineer. */
"Just now" = "Agora mesmo";
/* No comment provided by engineer. */
"Last month" = "Mês passado";
/* No comment provided by engineer. */
"Last week" = "Semana passada";
/* No comment provided by engineer. */
"Last year" = "Ano passado";
/* No comment provided by engineer. */
"Yesterday" = "Ontem";
/* No comment provided by engineer. */
"1 year ago" = "1 ano passado";
/* No comment provided by engineer. */
"1 month ago" = "1 mês atrás";
/* No comment provided by engineer. */
"1 week ago" = "1 semana atrás";
/* No comment provided by engineer. */
"1 day ago" = "1 dia atrás";
/* No comment provided by engineer. */
"This morning" = "Esta manhã";
/* No comment provided by engineer. */
"This afternoon" = "Esta tarde";
/* No comment provided by engineer. */
"Today" = "Hoje";
/* No comment provided by engineer. */
"This week" = "Esta semana";
/* No comment provided by engineer. */
"This month" = "Este mês";
/* No comment provided by engineer. */
"This year" = "Este ano";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/pt.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d dias atrás";
/* No comment provided by engineer. */
"%d hours ago" = "%d horas atrás";
/* No comment provided by engineer. */
"%d minutes ago" = "%d minutos atrás";
/* No comment provided by engineer. */
"%d months ago" = "%d meses atrás";
/* No comment provided by engineer. */
"%d seconds ago" = "%d segundos atrás";
/* No comment provided by engineer. */
"%d weeks ago" = "%d semanas atrás";
/* No comment provided by engineer. */
"%d years ago" = "%d anos atrás";
/* No comment provided by engineer. */
"A minute ago" = "Há um minuto";
/* No comment provided by engineer. */
"An hour ago" = "Há uma hora";
/* No comment provided by engineer. */
"Just now" = "Agora";
/* No comment provided by engineer. */
"Last month" = "Mês passado";
/* No comment provided by engineer. */
"Last week" = "Semana passada";
/* No comment provided by engineer. */
"Last year" = "Ano passado";
/* No comment provided by engineer. */
"Yesterday" = "Ontem";
/* No comment provided by engineer. */
"1 year ago" = "1 ano atrás";
/* No comment provided by engineer. */
"1 month ago" = "1 mês atrás";
/* No comment provided by engineer. */
"1 week ago" = "1 semana atrás";
/* No comment provided by engineer. */
"1 day ago" = "1 dia atrás";
/* No comment provided by engineer. */
"This morning" = "Esta manhã";
/* No comment provided by engineer. */
"This afternoon" = "Esta tarde";
/* No comment provided by engineer. */
"Today" = "Hoje";
/* No comment provided by engineer. */
"This week" = "Esta semana";
/* No comment provided by engineer. */
"This month" = "Este mês";
/* No comment provided by engineer. */
"This year" = "Este ano";

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ro.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "În urmă cu %d zile";
/* No comment provided by engineer. */
"%d hours ago" = "În urmă cu %d ore";
/* No comment provided by engineer. */
"%d minutes ago" = "În urmă cu %d minute";
/* No comment provided by engineer. */
"%d months ago" = "În urmă cu %d luni";
/* No comment provided by engineer. */
"%d seconds ago" = "În urmă cu %d secunde";
/* No comment provided by engineer. */
"%d weeks ago" = "În urmă cu %d săptămâni";
/* No comment provided by engineer. */
"%d years ago" = "În urmă cu %d ani";
/* No comment provided by engineer. */
"A minute ago" = "În urmă cu 1 minut";
/* No comment provided by engineer. */
"An hour ago" = "În urmă cu 1 oră";
/* No comment provided by engineer. */
"Just now" = "Acum câteva momente";
/* No comment provided by engineer. */
"Last month" = "Luna trecută";
/* No comment provided by engineer. */
"Last week" = "Săptămâna trecută";
/* No comment provided by engineer. */
"Last year" = "Anul trecut";
/* No comment provided by engineer. */
"Yesterday" = "Ieri";
/* No comment provided by engineer. */
"1 year ago" = "În urmă cu 1 an";
/* No comment provided by engineer. */
"1 month ago" = "În urmă cu 1 lună";
/* No comment provided by engineer. */
"1 week ago" = "În urmă cu 1 săptămână";
/* No comment provided by engineer. */
"1 day ago" = "În urmă cu 1 zi";
/* No comment provided by engineer. */
"This morning" = "Azi dimineață";
/* No comment provided by engineer. */
"This afternoon" = "În această seară";
/* No comment provided by engineer. */
"Today" = "Astăzi";
/* No comment provided by engineer. */
"This week" = "Săptămâna aceasta";
/* No comment provided by engineer. */
"This month" = "Luna aceasta";
/* No comment provided by engineer. */
"This year" = "Anul acesta";
/* Short format for */
"%dy" = "%da"; // year (an)
"%dM" = "%dl"; // month (luna)
"%dw" = "%dS"; // week (saptamana)
"%dd" = "%dz"; // day (ziua)
"%dh" = "%do"; // hour (ora)
"%dm" = "%dm"; // minute (minut)
"%ds" = "%ds"; // second (secunda)

125
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/ru.lproj/DateTools.strings

@ -0,0 +1,125 @@
/*
RULES:
Assume value for (seconds, hours, minutes, days, weeks, months or years) is XXXY, Y is last digit, XY is last two digits;
*/
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d days ago" = "%d дней назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _days ago" = "%d дня назад";
/* Y == 1 AND XY != 11; */
"%d __days ago" = "%d день назад";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d hours ago" = "%d часов назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _hours ago" = "%d часа назад";
/* Y == 1 AND XY != 11; */
"%d __hours ago" = "%d час назад";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d minutes ago" = "%d минут назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _minutes ago" = "%d минуты назад";
/* Y == 1 AND XY != 11; */
"%d __minutes ago" = "%d минуту назад";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d months ago" = "%d месяцев назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _months ago" = "%d месяца назад";
/* Y == 1 AND XY != 11; */
"%d __months ago" = "%d месяц назад";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d seconds ago" = "%d секунд назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _seconds ago" = "%d секунды назад";
/* Y == 1 AND XY != 11; */
"%d __seconds ago" = "%d секунду назад";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d weeks ago" = "%d недель назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _weeks ago" = "%d недели назад";
/* Y == 1 AND XY != 11; */
"%d __weeks ago" = "%d неделю назад";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d years ago" = "%d лет назад";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _years ago" = "%d года назад";
/* Y == 1 AND XY != 11; */
"%d __years ago" = "%d год назад";
/* No comment provided by engineer. */
"A minute ago" = "Минуту назад";
/* No comment provided by engineer. */
"An hour ago" = "Час назад";
/* No comment provided by engineer. */
"Just now" = "Только что";
/* No comment provided by engineer. */
"Last month" = "Месяц назад";
/* No comment provided by engineer. */
"Last week" = "Неделю назад";
/* No comment provided by engineer. */
"Last year" = "Год назад";
/* No comment provided by engineer. */
"Yesterday" = "Вчера";
/* No comment provided by engineer. */
"1 year ago" = "1 год назад";
/* No comment provided by engineer. */
"1 month ago" = "1 месяц назад";
/* No comment provided by engineer. */
"1 week ago" = "1 неделю назад";
/* No comment provided by engineer. */
"1 day ago" = "1 день назад";
/* No comment provided by engineer. */
"This morning" = "Этим утром";
/* No comment provided by engineer. */
"This afternoon" = "Этим днём";
/* No comment provided by engineer. */
"Today" = "Сегодня";
/* No comment provided by engineer. */
"This week" = "На этой неделе";
/* No comment provided by engineer. */
"This month" = "В этом месяце";
/* No comment provided by engineer. */
"This year" = "В этом году";

89
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/sl.lproj/DateTools.strings

@ -0,0 +1,89 @@
/* No comment provided by engineer. */
"%d days ago" = "pred %d dnevi";
/* No comment provided by engineer. */
"%d hours ago" = "pred %d urami";
/* No comment provided by engineer. */
"%d minutes ago" = "pred %d minutami";
/* No comment provided by engineer. */
"%d months ago" = "pred %d meseci";
/* No comment provided by engineer. */
"%d seconds ago" = "pred %d sekundami";
/* No comment provided by engineer. */
"%d weeks ago" = "pred %d tedni";
/* No comment provided by engineer. */
"%d years ago" = "pred %d leti";
/* No comment provided by engineer. */
"A minute ago" = "pred eno minuto";
/* No comment provided by engineer. */
"An hour ago" = "pred eno uro";
/* No comment provided by engineer. */
"Just now" = "ravnokar";
/* No comment provided by engineer. */
"Last month" = "prejšnji mesec";
/* No comment provided by engineer. */
"Last week" = "prejšnji teden";
/* No comment provided by engineer. */
"Last year" = "prejšnje leto";
/* No comment provided by engineer. */
"Yesterday" = "včeraj";
/* No comment provided by engineer. */
"1 year ago" = "pred 1 letom";
/* No comment provided by engineer. */
"1 month ago" = "pred 1 mesecem";
/* No comment provided by engineer. */
"1 week ago" = "pred 1 tednom";
/* No comment provided by engineer. */
"1 day ago" = "pred 1 dnevom";
/* No comment provided by engineer. */
"1 hour ago" = "pred 1 uro";
/* No comment provided by engineer. */
"1 minute ago" = "pred 1 minuto";
/* No comment provided by engineer. */
"1 second ago" = "pred 1 sekundo";
/* No comment provided by engineer. */
"This morning" = "zjutraj";
/* No comment provided by engineer. */
"This afternoon" = "zvečer";
/* No comment provided by engineer. */
"Today" = "danes";
/* No comment provided by engineer. */
"This week" = "ta teden";
/* No comment provided by engineer. */
"This month" = "ta mesec";
/* No comment provided by engineer. */
"This year" = "to leto";
/* Short format for */
"%dy" = "%dl"; // year
"%dM" = "%dM"; // month
"%dw" = "%dt"; // week
"%dd" = "%dd"; // day
"%dh" = "%du"; // hour
"%dm" = "%dm"; // minute
"%ds" = "%ds"; // second

BIN
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/sv.lproj/DateTools.strings

Binary file not shown.

BIN
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/th.lproj/DateTools.strings

Binary file not shown.

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/tr.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "%d gün önce";
/* No comment provided by engineer. */
"%d hours ago" = "%d saat önce";
/* No comment provided by engineer. */
"%d minutes ago" = "%d dakika önce";
/* No comment provided by engineer. */
"%d months ago" = "%d ay önce";
/* No comment provided by engineer. */
"%d seconds ago" = "%d saniye önce";
/* No comment provided by engineer. */
"%d weeks ago" = "%d hafta önce";
/* No comment provided by engineer. */
"%d years ago" = "%d yıl önce";
/* No comment provided by engineer. */
"A minute ago" = "Bir dakika önce";
/* No comment provided by engineer. */
"An hour ago" = "Bir saat önce";
/* No comment provided by engineer. */
"Just now" = "Şimdi";
/* No comment provided by engineer. */
"Last month" = "Geçen ay";
/* No comment provided by engineer. */
"Last week" = "Geçen hafta";
/* No comment provided by engineer. */
"Last year" = "Geçen yıl";
/* No comment provided by engineer. */
"Yesterday" = "Dün";
/* No comment provided by engineer. */
"1 year ago" = "1 yıl önce";
/* No comment provided by engineer. */
"1 month ago" = "1 ay önce";
/* No comment provided by engineer. */
"1 week ago" = "1 hafta önce";
/* No comment provided by engineer. */
"1 day ago" = "1 gün önce";
/* No comment provided by engineer. */
"This morning" = "Bu sabah";
/* No comment provided by engineer. */
"This afternoon" = "Öğleden sonra";
/* No comment provided by engineer. */
"Today" = "Bugün";
/* No comment provided by engineer. */
"This week" = "Bu hafta";
/* No comment provided by engineer. */
"This month" = "Bu ay";
/* No comment provided by engineer. */
"This year" = "Bu yıl";
/* Short format for */
"%dy" = "%dy"; // year
"%dM" = "%day"; // month
"%dw" = "%dh"; // week
"%dd" = "%dg"; // day
"%dh" = "%dsa"; // hour
"%dm" = "%ddk"; // minute
"%ds" = "%dsn"; // second

125
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/uk.lproj/DateTools.strings

@ -0,0 +1,125 @@
/*
RULES:
Assume value for (seconds, hours, minutes, days, weeks, months or years) is XXXY, Y is last digit, XY is last two digits;
*/
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d days ago" = "%d днів тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _days ago" = "%d дні тому";
/* Y == 1 AND XY != 11; */
"%d __days ago" = "%d день тому";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d hours ago" = "%d годин тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _hours ago" = "%d години тому";
/* Y == 1 AND XY != 11; */
"%d __hours ago" = "%d годину тому";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d minutes ago" = "%d хвилин тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _minutes ago" = "%d хвилини тому";
/* Y == 1 AND XY != 11; */
"%d __minutes ago" = "%d хвилину тому";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d months ago" = "%d місяців тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _months ago" = "%d місяці тому";
/* Y == 1 AND XY != 11; */
"%d __months ago" = "%d місяць тому";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d seconds ago" = "%d секунд тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _seconds ago" = "%d секунди тому";
/* Y == 1 AND XY != 11; */
"%d __seconds ago" = "%d секунду тому";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d weeks ago" = "%d тижнів тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _weeks ago" = "%d тижні тому";
/* Y == 1 AND XY != 11; */
"%d __weeks ago" = "%d тиждень тому";
/* Y == 0 OR Y > 4 OR (XY > 10 AND XY < 15); */
"%d years ago" = "%d років тому";
/* Y > 1 AND Y < 5 AND (XY < 10 OR XY > 20); */
"%d _years ago" = "%d роки тому";
/* Y == 1 AND XY != 11; */
"%d __years ago" = "%d рік тому";
/* No comment provided by engineer. */
"A minute ago" = "Хвилину тому";
/* No comment provided by engineer. */
"An hour ago" = "Годину тому";
/* No comment provided by engineer. */
"Just now" = "Щойно";
/* No comment provided by engineer. */
"Last month" = "Місяць тому";
/* No comment provided by engineer. */
"Last week" = "Тиждень тому";
/* No comment provided by engineer. */
"Last year" = "Рік тому";
/* No comment provided by engineer. */
"Yesterday" = "Вчора";
/* No comment provided by engineer. */
"1 year ago" = "1 рік тому";
/* No comment provided by engineer. */
"1 month ago" = "1 місяць тому";
/* No comment provided by engineer. */
"1 week ago" = "1 тиждень тому";
/* No comment provided by engineer. */
"1 day ago" = "1 день тому";
/* No comment provided by engineer. */
"This morning" = "Цього ранку";
/* No comment provided by engineer. */
"This afternoon" = "Сьогодні вдень";
/* No comment provided by engineer. */
"Today" = "Сьогодні";
/* No comment provided by engineer. */
"This week" = "Цього тижня";
/* No comment provided by engineer. */
"This month" = "Цього місяця";
/* No comment provided by engineer. */
"This year" = "Цього року";

71
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/vi.lproj/DateTools.strings

@ -0,0 +1,71 @@
/* No comment provided by engineer. */
"%d days ago" = "%d ngày trước";
/* No comment provided by engineer. */
"%d hours ago" = "%d giờ trước";
/* No comment provided by engineer. */
"%d minutes ago" = "%d phút trước";
/* No comment provided by engineer. */
"%d months ago" = "%d tháng trước";
/* No comment provided by engineer. */
"%d seconds ago" = "%d giây trước";
/* No comment provided by engineer. */
"%d weeks ago" = "%d tuần trước";
/* No comment provided by engineer. */
"%d years ago" = "%d năm trước";
/* No comment provided by engineer. */
"A minute ago" = "Một phút trước";
/* No comment provided by engineer. */
"An hour ago" = "Một giờ trước";
/* No comment provided by engineer. */
"Just now" = "Vừa mới đây";
/* No comment provided by engineer. */
"Last month" = "Tháng trước";
/* No comment provided by engineer. */
"Last week" = "Tuần trước";
/* No comment provided by engineer. */
"Last year" = "Năm vừa rồi";
/* No comment provided by engineer. */
"Yesterday" = "Hôm qua";
/* No comment provided by engineer. */
"1 year ago" = "1 năm trước";
/* No comment provided by engineer. */
"1 month ago" = "1 tháng trước";
/* No comment provided by engineer. */
"1 week ago" = "1 tuần trước";
/* No comment provided by engineer. */
"1 day ago" = "1 ngày trước";
/* No comment provided by engineer. */
"This morning" = "Sáng nay";
/* No comment provided by engineer. */
"This afternoon" = "Trưa nay";
/* No comment provided by engineer. */
"Today" = "Hôm nay";
/* No comment provided by engineer. */
"This week" = "Tuần này";
/* No comment provided by engineer. */
"This month" = "Tháng này";
/* No comment provided by engineer. */
"This year" = "Năm nay";

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/zh-Hans.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "%d天前";
/* No comment provided by engineer. */
"%d hours ago" = "%d小时前";
/* No comment provided by engineer. */
"%d minutes ago" = "%d分钟前";
/* No comment provided by engineer. */
"%d months ago" = "%d个月前";
/* No comment provided by engineer. */
"%d seconds ago" = "%d秒钟前";
/* No comment provided by engineer. */
"%d weeks ago" = "%d星期前";
/* No comment provided by engineer. */
"%d years ago" = "%d年前";
/* No comment provided by engineer. */
"A minute ago" = "1分钟前";
/* No comment provided by engineer. */
"An hour ago" = "1小时前";
/* No comment provided by engineer. */
"Just now" = "刚刚";
/* No comment provided by engineer. */
"Last month" = "上个月";
/* No comment provided by engineer. */
"Last week" = "上星期";
/* No comment provided by engineer. */
"Last year" = "去年";
/* No comment provided by engineer. */
"Yesterday" = "昨天";
/* You can add a space between the number and the characters. */
"1 year ago" = "1年前";
/* You can add a space between the number and the characters. */
"1 month ago" = "1个月前";
/* You can add a space between the number and the characters. */
"1 week ago" = "1星期前";
/* You can add a space between the number and the characters. */
"1 day ago" = "1天前";
/* No comment provided by engineer. */
"This morning" = "今天上午";
/* No comment provided by engineer. */
"This afternoon" = "今天下午";
/* No comment provided by engineer. */
"Today" = "今天";
/* No comment provided by engineer. */
"This week" = "本周";
/* No comment provided by engineer. */
"This month" = "本月";
/* No comment provided by engineer. */
"This year" = "今年";
/* Short format for */
"%dy" = "%d年"; // year
"%dM" = "%d月"; // month
"%dw" = "%d周"; // week
"%dd" = "%d天"; // day
"%dh" = "%d小时"; // hour
"%dm" = "%d分"; // minute
"%ds" = "%d秒"; // second

80
Clocker/Date Tools/DateTools-master/DateTools/DateTools.bundle/zh-Hant.lproj/DateTools.strings

@ -0,0 +1,80 @@
/* No comment provided by engineer. */
"%d days ago" = "%d天前";
/* No comment provided by engineer. */
"%d hours ago" = "%d小時前";
/* No comment provided by engineer. */
"%d minutes ago" = "%d分鐘前";
/* No comment provided by engineer. */
"%d months ago" = "%d個月前";
/* No comment provided by engineer. */
"%d seconds ago" = "%d秒鐘前";
/* No comment provided by engineer. */
"%d weeks ago" = "%d星期前";
/* No comment provided by engineer. */
"%d years ago" = "%d年前";
/* No comment provided by engineer. */
"A minute ago" = "1分鐘前";
/* No comment provided by engineer. */
"An hour ago" = "1小時前";
/* No comment provided by engineer. */
"Just now" = "剛剛";
/* No comment provided by engineer. */
"Last month" = "上個月";
/* No comment provided by engineer. */
"Last week" = "上星期";
/* No comment provided by engineer. */
"Last year" = "去年";
/* No comment provided by engineer. */
"Yesterday" = "昨天";
/* No comment provided by engineer. */
"1 year ago" = "1年前";
/* No comment provided by engineer. */
"1 month ago" = "1個月前";
/* No comment provided by engineer. */
"1 week ago" = "1星期前";
/* No comment provided by engineer. */
"1 day ago" = "1天前";
/* No comment provided by engineer. */
"This morning" = "今天上午";
/* No comment provided by engineer. */
"This afternoon" = "今天下午";
/* No comment provided by engineer. */
"Today" = "今天";
/* No comment provided by engineer. */
"This week" = "本周";
/* No comment provided by engineer. */
"This month" = "本月";
/* No comment provided by engineer. */
"This year" = "今年";
/* Short format for */
"%dy" = "%d年"; // year
"%dM" = "%d月"; // month
"%dw" = "%d週"; // week
"%dd" = "%d天"; // day
"%dh" = "%d小時"; // hour
"%dm" = "%d分"; // minute
"%ds" = "%d秒"; // second

29
Clocker/Date Tools/DateTools-master/DateTools/DateTools.h

@ -0,0 +1,29 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#import "DTConstants.h"
#import "DTError.h"
#import "NSDate+DateTools.h"
#import "DTTimePeriod.h"
#import "DTTimePeriodGroup.h"
#import "DTTimePeriodCollection.h"
#import "DTTimePeriodChain.h"

180
Clocker/Date Tools/DateTools-master/DateTools/NSDate+DateTools.h

@ -0,0 +1,180 @@
// Copyright (C) 2014 by Matthew York
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifndef DateToolsLocalizedStrings
#define DateToolsLocalizedStrings(key) \
NSLocalizedStringFromTableInBundle(key, @"DateTools", [NSBundle bundleWithPath:[[[NSBundle bundleForClass:[DTError class]] resourcePath] stringByAppendingPathComponent:@"DateTools.bundle"]], nil)
#endif
#import <Foundation/Foundation.h>
#import "DTConstants.h"
@interface NSDate (DateTools)
#pragma mark - Time Ago
+ (NSString*)timeAgoSinceDate:(NSDate*)date;
+ (NSString*)shortTimeAgoSinceDate:(NSDate*)date;
- (NSString*)timeAgoSinceNow;
- (NSString *)shortTimeAgoSinceNow;
- (NSString *)timeAgoSinceDate:(NSDate *)date;
- (NSString *)timeAgoSinceDate:(NSDate *)date numericDates:(BOOL)useNumericDates;
- (NSString *)timeAgoSinceDate:(NSDate *)date numericDates:(BOOL)useNumericDates numericTimes:(BOOL)useNumericTimes;
- (NSString *)shortTimeAgoSinceDate:(NSDate *)date;
#pragma mark - Date Components Without Calendar
- (NSInteger)era;
- (NSInteger)year;
- (NSInteger)month;
- (NSInteger)day;
- (NSInteger)hour;
- (NSInteger)minute;
- (NSInteger)second;
- (NSInteger)weekday;
- (NSInteger)weekdayOrdinal;
- (NSInteger)quarter;
- (NSInteger)weekOfMonth;
- (NSInteger)weekOfYear;
- (NSInteger)yearForWeekOfYear;
- (NSInteger)daysInMonth;
- (NSInteger)dayOfYear;
-(NSInteger)daysInYear;
-(BOOL)isInLeapYear;
- (BOOL)isToday;
- (BOOL)isTomorrow;
-(BOOL)isYesterday;
- (BOOL)isWeekend;
-(BOOL)isSameDay:(NSDate *)date;
+ (BOOL)isSameDay:(NSDate *)date asDate:(NSDate *)compareDate;
#pragma mark - Date Components With Calendar
- (NSInteger)eraWithCalendar:(NSCalendar *)calendar;
- (NSInteger)yearWithCalendar:(NSCalendar *)calendar;
- (NSInteger)monthWithCalendar:(NSCalendar *)calendar;
- (NSInteger)dayWithCalendar:(NSCalendar *)calendar;
- (NSInteger)hourWithCalendar:(NSCalendar *)calendar;
- (NSInteger)minuteWithCalendar:(NSCalendar *)calendar;
- (NSInteger)secondWithCalendar:(NSCalendar *)calendar;
- (NSInteger)weekdayWithCalendar:(NSCalendar *)calendar;
- (NSInteger)weekdayOrdinalWithCalendar:(NSCalendar *)calendar;
- (NSInteger)quarterWithCalendar:(NSCalendar *)calendar;
- (NSInteger)weekOfMonthWithCalendar:(NSCalendar *)calendar;
- (NSInteger)weekOfYearWithCalendar:(NSCalendar *)calendar;
- (NSInteger)yearForWeekOfYearWithCalendar:(NSCalendar *)calendar;
#pragma mark - Date Creating
+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day;
+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute second:(NSInteger)second;
+ (NSDate *)dateWithString:(NSString *)dateString formatString:(NSString *)formatString;
+ (NSDate *)dateWithString:(NSString *)dateString formatString:(NSString *)formatString timeZone:(NSTimeZone *)timeZone;
#pragma mark - Date Editing
#pragma mark Date By Adding
- (NSDate *)dateByAddingYears:(NSInteger)years;
- (NSDate *)dateByAddingMonths:(NSInteger)months;
- (NSDate *)dateByAddingWeeks:(NSInteger)weeks;
- (NSDate *)dateByAddingDays:(NSInteger)days;
- (NSDate *)dateByAddingHours:(NSInteger)hours;
- (NSDate *)dateByAddingMinutes:(NSInteger)minutes;
- (NSDate *)dateByAddingSeconds:(NSInteger)seconds;
#pragma mark Date By Subtracting
- (NSDate *)dateBySubtractingYears:(NSInteger)years;
- (NSDate *)dateBySubtractingMonths:(NSInteger)months;
- (NSDate *)dateBySubtractingWeeks:(NSInteger)weeks;
- (NSDate *)dateBySubtractingDays:(NSInteger)days;
- (NSDate *)dateBySubtractingHours:(NSInteger)hours;
- (NSDate *)dateBySubtractingMinutes:(NSInteger)minutes;
- (NSDate *)dateBySubtractingSeconds:(NSInteger)seconds;
#pragma mark - Date Comparison
#pragma mark Time From
-(NSInteger)yearsFrom:(NSDate *)date;
-(NSInteger)monthsFrom:(NSDate *)date;
-(NSInteger)weeksFrom:(NSDate *)date;
-(NSInteger)daysFrom:(NSDate *)date;
-(double)hoursFrom:(NSDate *)date;
-(double)minutesFrom:(NSDate *)date;
-(double)secondsFrom:(NSDate *)date;
#pragma mark Time From With Calendar
-(NSInteger)yearsFrom:(NSDate *)date calendar:(NSCalendar *)calendar;
-(NSInteger)monthsFrom:(NSDate *)date calendar:(NSCalendar *)calendar;
-(NSInteger)weeksFrom:(NSDate *)date calendar:(NSCalendar *)calendar;
-(NSInteger)daysFrom:(NSDate *)date calendar:(NSCalendar *)calendar;
#pragma mark Time Until
-(NSInteger)yearsUntil;
-(NSInteger)monthsUntil;
-(NSInteger)weeksUntil;
-(NSInteger)daysUntil;
-(double)hoursUntil;
-(double)minutesUntil;
-(double)secondsUntil;
#pragma mark Time Ago
-(NSInteger)yearsAgo;
-(NSInteger)monthsAgo;
-(NSInteger)weeksAgo;
-(NSInteger)daysAgo;
-(double)hoursAgo;
-(double)minutesAgo;
-(double)secondsAgo;
#pragma mark Earlier Than
-(NSInteger)yearsEarlierThan:(NSDate *)date;
-(NSInteger)monthsEarlierThan:(NSDate *)date;
-(NSInteger)weeksEarlierThan:(NSDate *)date;
-(NSInteger)daysEarlierThan:(NSDate *)date;
-(double)hoursEarlierThan:(NSDate *)date;
-(double)minutesEarlierThan:(NSDate *)date;
-(double)secondsEarlierThan:(NSDate *)date;
#pragma mark Later Than
-(NSInteger)yearsLaterThan:(NSDate *)date;
-(NSInteger)monthsLaterThan:(NSDate *)date;
-(NSInteger)weeksLaterThan:(NSDate *)date;
-(NSInteger)daysLaterThan:(NSDate *)date;
-(double)hoursLaterThan:(NSDate *)date;
-(double)minutesLaterThan:(NSDate *)date;
-(double)secondsLaterThan:(NSDate *)date;
#pragma mark Comparators
-(BOOL)isEarlierThan:(NSDate *)date;
-(BOOL)isLaterThan:(NSDate *)date;
-(BOOL)isEarlierThanOrEqualTo:(NSDate *)date;
-(BOOL)isLaterThanOrEqualTo:(NSDate *)date;
#pragma mark - Formatted Dates
#pragma mark Formatted With Style
-(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style;
-(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style timeZone:(NSTimeZone *)timeZone;
-(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style locale:(NSLocale *)locale;
-(NSString *)formattedDateWithStyle:(NSDateFormatterStyle)style timeZone:(NSTimeZone *)timeZone locale:(NSLocale *)locale;
#pragma mark Formatted With Format
-(NSString *)formattedDateWithFormat:(NSString *)format;
-(NSString *)formattedDateWithFormat:(NSString *)format timeZone:(NSTimeZone *)timeZone;
-(NSString *)formattedDateWithFormat:(NSString *)format locale:(NSLocale *)locale;
-(NSString *)formattedDateWithFormat:(NSString *)format timeZone:(NSTimeZone *)timeZone locale:(NSLocale *)locale;
#pragma mark - Helpers
+(NSString *)defaultCalendarIdentifier;
+ (void)setDefaultCalendarIdentifier:(NSString *)identifier;
@end

1721
Clocker/Date Tools/DateTools-master/DateTools/NSDate+DateTools.m

File diff suppressed because it is too large Load Diff

26
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateTools/Info.plist

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.molabo.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

837
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample.xcodeproj/project.pbxproj

@ -0,0 +1,837 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
0AFD486518F0BBC0004D0FE1 /* DateTools.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 0AFD486418F0BBC0004D0FE1 /* DateTools.bundle */; };
901CF0E31B6CA9FE00F6414B /* DateTools.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 901CF0D31B6CA9FE00F6414B /* DateTools.bundle */; };
901CF0E41B6CA9FE00F6414B /* DateTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0D41B6CA9FE00F6414B /* DateTools.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0E51B6CA9FE00F6414B /* DTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0D51B6CA9FE00F6414B /* DTConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0E61B6CA9FE00F6414B /* DTConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0D61B6CA9FE00F6414B /* DTConstants.m */; };
901CF0E71B6CA9FE00F6414B /* DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0D71B6CA9FE00F6414B /* DTError.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0E81B6CA9FE00F6414B /* DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0D81B6CA9FE00F6414B /* DTError.m */; };
901CF0E91B6CA9FE00F6414B /* DTTimePeriod.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0D91B6CA9FE00F6414B /* DTTimePeriod.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0EA1B6CA9FE00F6414B /* DTTimePeriod.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0DA1B6CA9FE00F6414B /* DTTimePeriod.m */; };
901CF0EB1B6CA9FE00F6414B /* DTTimePeriodChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0DB1B6CA9FE00F6414B /* DTTimePeriodChain.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0EC1B6CA9FE00F6414B /* DTTimePeriodChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0DC1B6CA9FE00F6414B /* DTTimePeriodChain.m */; };
901CF0ED1B6CA9FE00F6414B /* DTTimePeriodCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0DD1B6CA9FE00F6414B /* DTTimePeriodCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0EE1B6CA9FE00F6414B /* DTTimePeriodCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0DE1B6CA9FE00F6414B /* DTTimePeriodCollection.m */; };
901CF0EF1B6CA9FE00F6414B /* DTTimePeriodGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0DF1B6CA9FE00F6414B /* DTTimePeriodGroup.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0F01B6CA9FE00F6414B /* DTTimePeriodGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0E01B6CA9FE00F6414B /* DTTimePeriodGroup.m */; };
901CF0F11B6CA9FE00F6414B /* NSDate+DateTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 901CF0E11B6CA9FE00F6414B /* NSDate+DateTools.h */; settings = {ATTRIBUTES = (Public, ); }; };
901CF0F21B6CA9FE00F6414B /* NSDate+DateTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 901CF0E21B6CA9FE00F6414B /* NSDate+DateTools.m */; };
D935DB441B567FBD00BAA4F0 /* DTConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D935DB431B567FBD00BAA4F0 /* DTConstants.m */; };
F007632018DE5F5E00A99075 /* DateToolsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F007631E18DE5F5E00A99075 /* DateToolsViewController.m */; };
F007632118DE5F5E00A99075 /* DateToolsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F007631F18DE5F5E00A99075 /* DateToolsViewController.xib */; };
F007632518DE5FE300A99075 /* Colours.m in Sources */ = {isa = PBXBuildFile; fileRef = F007632418DE5FE300A99075 /* Colours.m */; };
F007632C18DE61EE00A99075 /* Calendar_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F007632818DE61EE00A99075 /* Calendar_filled.png */; };
F007632D18DE61EE00A99075 /* Calendar_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F007632918DE61EE00A99075 /* Calendar_filled@2x.png */; };
F007632E18DE61EE00A99075 /* Calendar.png in Resources */ = {isa = PBXBuildFile; fileRef = F007632A18DE61EE00A99075 /* Calendar.png */; };
F007632F18DE61EE00A99075 /* Calendar@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F007632B18DE61EE00A99075 /* Calendar@2x.png */; };
F007633418DE628900A99075 /* ExampleNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = F007633318DE628900A99075 /* ExampleNavigationController.m */; };
F007633918DE63C400A99075 /* TimePeriodsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F007633718DE63C400A99075 /* TimePeriodsViewController.m */; };
F007633A18DE63C400A99075 /* TimePeriodsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F007633818DE63C400A99075 /* TimePeriodsViewController.xib */; };
F007633F18DE647600A99075 /* Recents_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F007633B18DE647600A99075 /* Recents_filled.png */; };
F007634018DE647600A99075 /* Recents_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F007633C18DE647600A99075 /* Recents_filled@2x.png */; };
F007634118DE647600A99075 /* Recents.png in Resources */ = {isa = PBXBuildFile; fileRef = F007633D18DE647600A99075 /* Recents.png */; };
F007634218DE647600A99075 /* Recents@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F007633E18DE647600A99075 /* Recents@2x.png */; };
F07A1A0818DCC76500B3E9FF /* DTTimePeriodCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = F07A1A0718DCC76500B3E9FF /* DTTimePeriodCollection.m */; };
F0A426D618D9FDB500E236C0 /* DTTimePeriod.m in Sources */ = {isa = PBXBuildFile; fileRef = F0A426D518D9FDB500E236C0 /* DTTimePeriod.m */; };
F0EE17E718DEB1A10010FAD8 /* DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = F0EE17E218DEB1A10010FAD8 /* DTError.m */; };
F0EE17E818DEB1A10010FAD8 /* DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = F0EE17E218DEB1A10010FAD8 /* DTError.m */; };
F0EE17E918DEB1A10010FAD8 /* DTTimePeriodChain.m in Sources */ = {isa = PBXBuildFile; fileRef = F0EE17E418DEB1A10010FAD8 /* DTTimePeriodChain.m */; };
F0EE17EA18DEB1A10010FAD8 /* DTTimePeriodChain.m in Sources */ = {isa = PBXBuildFile; fileRef = F0EE17E418DEB1A10010FAD8 /* DTTimePeriodChain.m */; };
F0EE17EB18DEB1A10010FAD8 /* DTTimePeriodGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = F0EE17E618DEB1A10010FAD8 /* DTTimePeriodGroup.m */; };
F0EE17EC18DEB1A10010FAD8 /* DTTimePeriodGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = F0EE17E618DEB1A10010FAD8 /* DTTimePeriodGroup.m */; };
F0F08D9F18D9E80E00214C6B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F08D9E18D9E80E00214C6B /* Foundation.framework */; };
F0F08DA118D9E80E00214C6B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F08DA018D9E80E00214C6B /* CoreGraphics.framework */; };
F0F08DA318D9E80E00214C6B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F08DA218D9E80E00214C6B /* UIKit.framework */; };
F0F08DA918D9E80E00214C6B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F0F08DA718D9E80E00214C6B /* InfoPlist.strings */; };
F0F08DAB18D9E80E00214C6B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F08DAA18D9E80E00214C6B /* main.m */; };
F0F08DAF18D9E80E00214C6B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F08DAE18D9E80E00214C6B /* AppDelegate.m */; };
F0F08DB718D9E80E00214C6B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F0F08DB618D9E80E00214C6B /* Images.xcassets */; };
F0F08DBE18D9E80E00214C6B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F08DBD18D9E80E00214C6B /* XCTest.framework */; };
F0F08DBF18D9E80E00214C6B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F08D9E18D9E80E00214C6B /* Foundation.framework */; };
F0F08DC018D9E80E00214C6B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0F08DA218D9E80E00214C6B /* UIKit.framework */; };
F0F08DC818D9E80E00214C6B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F0F08DC618D9E80E00214C6B /* InfoPlist.strings */; };
F0F08DD918D9E94F00214C6B /* NSDate+DateTools.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F08DD818D9E94F00214C6B /* NSDate+DateTools.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
F0F08DC118D9E80E00214C6B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = F0F08D9318D9E80E00214C6B /* Project object */;
proxyType = 1;
remoteGlobalIDString = F0F08D9A18D9E80E00214C6B;
remoteInfo = DateToolsExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0AFD486418F0BBC0004D0FE1 /* DateTools.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = DateTools.bundle; path = ../../../DateTools/DateTools.bundle; sourceTree = "<group>"; };
901CF0D31B6CA9FE00F6414B /* DateTools.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = DateTools.bundle; sourceTree = "<group>"; };
901CF0D41B6CA9FE00F6414B /* DateTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTools.h; sourceTree = "<group>"; };
901CF0D51B6CA9FE00F6414B /* DTConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTConstants.h; sourceTree = "<group>"; };
901CF0D61B6CA9FE00F6414B /* DTConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTConstants.m; sourceTree = "<group>"; };
901CF0D71B6CA9FE00F6414B /* DTError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTError.h; sourceTree = "<group>"; };
901CF0D81B6CA9FE00F6414B /* DTError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTError.m; sourceTree = "<group>"; };
901CF0D91B6CA9FE00F6414B /* DTTimePeriod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTTimePeriod.h; sourceTree = "<group>"; };
901CF0DA1B6CA9FE00F6414B /* DTTimePeriod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTTimePeriod.m; sourceTree = "<group>"; };
901CF0DB1B6CA9FE00F6414B /* DTTimePeriodChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTTimePeriodChain.h; sourceTree = "<group>"; };
901CF0DC1B6CA9FE00F6414B /* DTTimePeriodChain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTTimePeriodChain.m; sourceTree = "<group>"; };
901CF0DD1B6CA9FE00F6414B /* DTTimePeriodCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTTimePeriodCollection.h; sourceTree = "<group>"; };
901CF0DE1B6CA9FE00F6414B /* DTTimePeriodCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTTimePeriodCollection.m; sourceTree = "<group>"; };
901CF0DF1B6CA9FE00F6414B /* DTTimePeriodGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTTimePeriodGroup.h; sourceTree = "<group>"; };
901CF0E01B6CA9FE00F6414B /* DTTimePeriodGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTTimePeriodGroup.m; sourceTree = "<group>"; };
901CF0E11B6CA9FE00F6414B /* NSDate+DateTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+DateTools.h"; sourceTree = "<group>"; };
901CF0E21B6CA9FE00F6414B /* NSDate+DateTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+DateTools.m"; sourceTree = "<group>"; };
908837C91B637C240063096B /* DateTools.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DateTools.framework; sourceTree = BUILT_PRODUCTS_DIR; };
908837CC1B637C240063096B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D935DB431B567FBD00BAA4F0 /* DTConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTConstants.m; path = ../../../DateTools/DTConstants.m; sourceTree = "<group>"; };
F007631D18DE5F5E00A99075 /* DateToolsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateToolsViewController.h; sourceTree = "<group>"; };
F007631E18DE5F5E00A99075 /* DateToolsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DateToolsViewController.m; sourceTree = "<group>"; };
F007631F18DE5F5E00A99075 /* DateToolsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DateToolsViewController.xib; sourceTree = "<group>"; };
F007632318DE5FE300A99075 /* Colours.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Colours.h; sourceTree = "<group>"; };
F007632418DE5FE300A99075 /* Colours.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Colours.m; sourceTree = "<group>"; };
F007632818DE61EE00A99075 /* Calendar_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Calendar_filled.png; sourceTree = "<group>"; };
F007632918DE61EE00A99075 /* Calendar_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Calendar_filled@2x.png"; sourceTree = "<group>"; };
F007632A18DE61EE00A99075 /* Calendar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Calendar.png; sourceTree = "<group>"; };
F007632B18DE61EE00A99075 /* Calendar@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Calendar@2x.png"; sourceTree = "<group>"; };
F007633218DE628900A99075 /* ExampleNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleNavigationController.h; sourceTree = "<group>"; };
F007633318DE628900A99075 /* ExampleNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleNavigationController.m; sourceTree = "<group>"; };
F007633618DE63C400A99075 /* TimePeriodsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimePeriodsViewController.h; sourceTree = "<group>"; };
F007633718DE63C400A99075 /* TimePeriodsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimePeriodsViewController.m; sourceTree = "<group>"; };
F007633818DE63C400A99075 /* TimePeriodsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TimePeriodsViewController.xib; sourceTree = "<group>"; };
F007633B18DE647600A99075 /* Recents_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Recents_filled.png; sourceTree = "<group>"; };
F007633C18DE647600A99075 /* Recents_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Recents_filled@2x.png"; sourceTree = "<group>"; };
F007633D18DE647600A99075 /* Recents.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Recents.png; sourceTree = "<group>"; };
F007633E18DE647600A99075 /* Recents@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Recents@2x.png"; sourceTree = "<group>"; };
F07A1A0618DCC76500B3E9FF /* DTTimePeriodCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriodCollection.h; path = ../../../DateTools/DTTimePeriodCollection.h; sourceTree = "<group>"; };
F07A1A0718DCC76500B3E9FF /* DTTimePeriodCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriodCollection.m; path = ../../../DateTools/DTTimePeriodCollection.m; sourceTree = "<group>"; };
F0A426D418D9FDB500E236C0 /* DTTimePeriod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriod.h; path = ../../../DateTools/DTTimePeriod.h; sourceTree = "<group>"; };
F0A426D518D9FDB500E236C0 /* DTTimePeriod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriod.m; path = ../../../DateTools/DTTimePeriod.m; sourceTree = "<group>"; };
F0A426D918DA358C00E236C0 /* DTConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTConstants.h; path = ../../../DateTools/DTConstants.h; sourceTree = "<group>"; };
F0EE17E018DEAE190010FAD8 /* DateTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DateTools.h; path = ../../../DateTools/DateTools.h; sourceTree = "<group>"; };
F0EE17E118DEB1A10010FAD8 /* DTError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTError.h; path = ../../../DateTools/DTError.h; sourceTree = "<group>"; };
F0EE17E218DEB1A10010FAD8 /* DTError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTError.m; path = ../../../DateTools/DTError.m; sourceTree = "<group>"; };
F0EE17E318DEB1A10010FAD8 /* DTTimePeriodChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriodChain.h; path = ../../../DateTools/DTTimePeriodChain.h; sourceTree = "<group>"; };
F0EE17E418DEB1A10010FAD8 /* DTTimePeriodChain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriodChain.m; path = ../../../DateTools/DTTimePeriodChain.m; sourceTree = "<group>"; };
F0EE17E518DEB1A10010FAD8 /* DTTimePeriodGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DTTimePeriodGroup.h; path = ../../../DateTools/DTTimePeriodGroup.h; sourceTree = "<group>"; };
F0EE17E618DEB1A10010FAD8 /* DTTimePeriodGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DTTimePeriodGroup.m; path = ../../../DateTools/DTTimePeriodGroup.m; sourceTree = "<group>"; };
F0F08D9B18D9E80E00214C6B /* DateToolsExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DateToolsExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
F0F08D9E18D9E80E00214C6B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
F0F08DA018D9E80E00214C6B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
F0F08DA218D9E80E00214C6B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
F0F08DA618D9E80E00214C6B /* DateToolsExample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DateToolsExample-Info.plist"; sourceTree = "<group>"; };
F0F08DA818D9E80E00214C6B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
F0F08DAA18D9E80E00214C6B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
F0F08DAC18D9E80E00214C6B /* DateToolsExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DateToolsExample-Prefix.pch"; sourceTree = "<group>"; };
F0F08DAD18D9E80E00214C6B /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
F0F08DAE18D9E80E00214C6B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
F0F08DB618D9E80E00214C6B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
F0F08DBC18D9E80E00214C6B /* DateToolsExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DateToolsExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
F0F08DBD18D9E80E00214C6B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
F0F08DC518D9E80E00214C6B /* DateToolsExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DateToolsExampleTests-Info.plist"; sourceTree = "<group>"; };
F0F08DC718D9E80E00214C6B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
F0F08DD718D9E94F00214C6B /* NSDate+DateTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSDate+DateTools.h"; path = "../../../DateTools/NSDate+DateTools.h"; sourceTree = "<group>"; };
F0F08DD818D9E94F00214C6B /* NSDate+DateTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSDate+DateTools.m"; path = "../../../DateTools/NSDate+DateTools.m"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
908837C51B637C240063096B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
F0F08D9818D9E80E00214C6B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F0F08DA118D9E80E00214C6B /* CoreGraphics.framework in Frameworks */,
F0F08DA318D9E80E00214C6B /* UIKit.framework in Frameworks */,
F0F08D9F18D9E80E00214C6B /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F0F08DB918D9E80E00214C6B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F0F08DBE18D9E80E00214C6B /* XCTest.framework in Frameworks */,
F0F08DC018D9E80E00214C6B /* UIKit.framework in Frameworks */,
F0F08DBF18D9E80E00214C6B /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
901CF0D21B6CA9FE00F6414B /* DateTools */ = {
isa = PBXGroup;
children = (
901CF0D31B6CA9FE00F6414B /* DateTools.bundle */,
901CF0D41B6CA9FE00F6414B /* DateTools.h */,
901CF0D51B6CA9FE00F6414B /* DTConstants.h */,
901CF0D61B6CA9FE00F6414B /* DTConstants.m */,
901CF0D71B6CA9FE00F6414B /* DTError.h */,
901CF0D81B6CA9FE00F6414B /* DTError.m */,
901CF0D91B6CA9FE00F6414B /* DTTimePeriod.h */,
901CF0DA1B6CA9FE00F6414B /* DTTimePeriod.m */,
901CF0DB1B6CA9FE00F6414B /* DTTimePeriodChain.h */,
901CF0DC1B6CA9FE00F6414B /* DTTimePeriodChain.m */,
901CF0DD1B6CA9FE00F6414B /* DTTimePeriodCollection.h */,
901CF0DE1B6CA9FE00F6414B /* DTTimePeriodCollection.m */,
901CF0DF1B6CA9FE00F6414B /* DTTimePeriodGroup.h */,
901CF0E01B6CA9FE00F6414B /* DTTimePeriodGroup.m */,
901CF0E11B6CA9FE00F6414B /* NSDate+DateTools.h */,
901CF0E21B6CA9FE00F6414B /* NSDate+DateTools.m */,
);
name = DateTools;
path = ../../../DateTools;
sourceTree = "<group>";
};
908837CA1B637C240063096B /* DateTools */ = {
isa = PBXGroup;
children = (
901CF0D21B6CA9FE00F6414B /* DateTools */,
908837CB1B637C240063096B /* Supporting Files */,
);
path = DateTools;
sourceTree = "<group>";
};
908837CB1B637C240063096B /* Supporting Files */ = {
isa = PBXGroup;
children = (
908837CC1B637C240063096B /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
F007632218DE5F9E00A99075 /* Colours */ = {
isa = PBXGroup;
children = (
F007632318DE5FE300A99075 /* Colours.h */,
F007632418DE5FE300A99075 /* Colours.m */,
);
name = Colours;
sourceTree = "<group>";
};
F007632618DE612D00A99075 /* Images */ = {
isa = PBXGroup;
children = (
F007632718DE613400A99075 /* Tab bar */,
);
name = Images;
sourceTree = "<group>";
};
F007632718DE613400A99075 /* Tab bar */ = {
isa = PBXGroup;
children = (
F007632818DE61EE00A99075 /* Calendar_filled.png */,
F007632918DE61EE00A99075 /* Calendar_filled@2x.png */,
F007632A18DE61EE00A99075 /* Calendar.png */,
F007632B18DE61EE00A99075 /* Calendar@2x.png */,
F007633B18DE647600A99075 /* Recents_filled.png */,
F007633C18DE647600A99075 /* Recents_filled@2x.png */,
F007633D18DE647600A99075 /* Recents.png */,
F007633E18DE647600A99075 /* Recents@2x.png */,
);
name = "Tab bar";
sourceTree = "<group>";
};
F007633018DE626600A99075 /* Controllers */ = {
isa = PBXGroup;
children = (
F007633218DE628900A99075 /* ExampleNavigationController.h */,
F007633318DE628900A99075 /* ExampleNavigationController.m */,
F007633118DE626D00A99075 /* Date Tools */,
F007633518DE63AB00A99075 /* Time Periods */,
);
name = Controllers;
sourceTree = "<group>";
};
F007633118DE626D00A99075 /* Date Tools */ = {
isa = PBXGroup;
children = (
F007631D18DE5F5E00A99075 /* DateToolsViewController.h */,
F007631E18DE5F5E00A99075 /* DateToolsViewController.m */,
F007631F18DE5F5E00A99075 /* DateToolsViewController.xib */,
);
name = "Date Tools";
sourceTree = "<group>";
};
F007633518DE63AB00A99075 /* Time Periods */ = {
isa = PBXGroup;
children = (
F007633618DE63C400A99075 /* TimePeriodsViewController.h */,
F007633718DE63C400A99075 /* TimePeriodsViewController.m */,
F007633818DE63C400A99075 /* TimePeriodsViewController.xib */,
);
name = "Time Periods";
sourceTree = "<group>";
};
F0F08D9218D9E80E00214C6B = {
isa = PBXGroup;
children = (
F0F08DA418D9E80E00214C6B /* DateToolsExample */,
F0F08DC318D9E80E00214C6B /* DateToolsExampleTests */,
908837CA1B637C240063096B /* DateTools */,
F0F08D9D18D9E80E00214C6B /* Frameworks */,
F0F08D9C18D9E80E00214C6B /* Products */,
);
sourceTree = "<group>";
};
F0F08D9C18D9E80E00214C6B /* Products */ = {
isa = PBXGroup;
children = (
F0F08D9B18D9E80E00214C6B /* DateToolsExample.app */,
F0F08DBC18D9E80E00214C6B /* DateToolsExampleTests.xctest */,
908837C91B637C240063096B /* DateTools.framework */,
);
name = Products;
sourceTree = "<group>";
};
F0F08D9D18D9E80E00214C6B /* Frameworks */ = {
isa = PBXGroup;
children = (
F0F08D9E18D9E80E00214C6B /* Foundation.framework */,
F0F08DA018D9E80E00214C6B /* CoreGraphics.framework */,
F0F08DA218D9E80E00214C6B /* UIKit.framework */,
F0F08DBD18D9E80E00214C6B /* XCTest.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
F0F08DA418D9E80E00214C6B /* DateToolsExample */ = {
isa = PBXGroup;
children = (
F0F08DAD18D9E80E00214C6B /* AppDelegate.h */,
F0F08DAE18D9E80E00214C6B /* AppDelegate.m */,
F0F08DD318D9E81C00214C6B /* DateTools */,
F007633018DE626600A99075 /* Controllers */,
F0F08DB618D9E80E00214C6B /* Images.xcassets */,
F0F08DA518D9E80E00214C6B /* Supporting Files */,
);
path = DateToolsExample;
sourceTree = "<group>";
};
F0F08DA518D9E80E00214C6B /* Supporting Files */ = {
isa = PBXGroup;
children = (
F007632618DE612D00A99075 /* Images */,
F007632218DE5F9E00A99075 /* Colours */,
F0F08DA618D9E80E00214C6B /* DateToolsExample-Info.plist */,
F0F08DA718D9E80E00214C6B /* InfoPlist.strings */,
F0F08DAA18D9E80E00214C6B /* main.m */,
F0F08DAC18D9E80E00214C6B /* DateToolsExample-Prefix.pch */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
F0F08DC318D9E80E00214C6B /* DateToolsExampleTests */ = {
isa = PBXGroup;
children = (
F0F08DC418D9E80E00214C6B /* Supporting Files */,
);
path = DateToolsExampleTests;
sourceTree = "<group>";
};
F0F08DC418D9E80E00214C6B /* Supporting Files */ = {
isa = PBXGroup;
children = (
F0F08DC518D9E80E00214C6B /* DateToolsExampleTests-Info.plist */,
F0F08DC618D9E80E00214C6B /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
F0F08DD318D9E81C00214C6B /* DateTools */ = {
isa = PBXGroup;
children = (
0AFD486418F0BBC0004D0FE1 /* DateTools.bundle */,
F0EE17E118DEB1A10010FAD8 /* DTError.h */,
F0EE17E218DEB1A10010FAD8 /* DTError.m */,
F0EE17E018DEAE190010FAD8 /* DateTools.h */,
F0A426D918DA358C00E236C0 /* DTConstants.h */,
D935DB431B567FBD00BAA4F0 /* DTConstants.m */,
F0F08DD718D9E94F00214C6B /* NSDate+DateTools.h */,
F0F08DD818D9E94F00214C6B /* NSDate+DateTools.m */,
F0A426D418D9FDB500E236C0 /* DTTimePeriod.h */,
F0A426D518D9FDB500E236C0 /* DTTimePeriod.m */,
F0EE17E518DEB1A10010FAD8 /* DTTimePeriodGroup.h */,
F0EE17E618DEB1A10010FAD8 /* DTTimePeriodGroup.m */,
F07A1A0618DCC76500B3E9FF /* DTTimePeriodCollection.h */,
F07A1A0718DCC76500B3E9FF /* DTTimePeriodCollection.m */,
F0EE17E318DEB1A10010FAD8 /* DTTimePeriodChain.h */,
F0EE17E418DEB1A10010FAD8 /* DTTimePeriodChain.m */,
);
name = DateTools;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
908837C61B637C240063096B /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
901CF0EF1B6CA9FE00F6414B /* DTTimePeriodGroup.h in Headers */,
901CF0E91B6CA9FE00F6414B /* DTTimePeriod.h in Headers */,
901CF0E41B6CA9FE00F6414B /* DateTools.h in Headers */,
901CF0E71B6CA9FE00F6414B /* DTError.h in Headers */,
901CF0EB1B6CA9FE00F6414B /* DTTimePeriodChain.h in Headers */,
901CF0F11B6CA9FE00F6414B /* NSDate+DateTools.h in Headers */,
901CF0E51B6CA9FE00F6414B /* DTConstants.h in Headers */,
901CF0ED1B6CA9FE00F6414B /* DTTimePeriodCollection.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
908837C81B637C240063096B /* DateTools */ = {
isa = PBXNativeTarget;
buildConfigurationList = 908837E01B637C240063096B /* Build configuration list for PBXNativeTarget "DateTools" */;
buildPhases = (
908837C41B637C240063096B /* Sources */,
908837C51B637C240063096B /* Frameworks */,
908837C61B637C240063096B /* Headers */,
908837C71B637C240063096B /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = DateTools;
productName = DateTools;
productReference = 908837C91B637C240063096B /* DateTools.framework */;
productType = "com.apple.product-type.framework";
};
F0F08D9A18D9E80E00214C6B /* DateToolsExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = F0F08DCD18D9E80E00214C6B /* Build configuration list for PBXNativeTarget "DateToolsExample" */;
buildPhases = (
F0F08D9718D9E80E00214C6B /* Sources */,
F0F08D9818D9E80E00214C6B /* Frameworks */,
F0F08D9918D9E80E00214C6B /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = DateToolsExample;
productName = DateToolsExample;
productReference = F0F08D9B18D9E80E00214C6B /* DateToolsExample.app */;
productType = "com.apple.product-type.application";
};
F0F08DBB18D9E80E00214C6B /* DateToolsExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = F0F08DD018D9E80E00214C6B /* Build configuration list for PBXNativeTarget "DateToolsExampleTests" */;
buildPhases = (
F0F08DB818D9E80E00214C6B /* Sources */,
F0F08DB918D9E80E00214C6B /* Frameworks */,
F0F08DBA18D9E80E00214C6B /* Resources */,
);
buildRules = (
);
dependencies = (
F0F08DC218D9E80E00214C6B /* PBXTargetDependency */,
);
name = DateToolsExampleTests;
productName = DateToolsExampleTests;
productReference = F0F08DBC18D9E80E00214C6B /* DateToolsExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
F0F08D9318D9E80E00214C6B /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
TargetAttributes = {
908837C81B637C240063096B = {
CreatedOnToolsVersion = 6.4;
};
F0F08DBB18D9E80E00214C6B = {
TestTargetID = F0F08D9A18D9E80E00214C6B;
};
};
};
buildConfigurationList = F0F08D9618D9E80E00214C6B /* Build configuration list for PBXProject "DateToolsExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = F0F08D9218D9E80E00214C6B;
productRefGroup = F0F08D9C18D9E80E00214C6B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
F0F08D9A18D9E80E00214C6B /* DateToolsExample */,
F0F08DBB18D9E80E00214C6B /* DateToolsExampleTests */,
908837C81B637C240063096B /* DateTools */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
908837C71B637C240063096B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
901CF0E31B6CA9FE00F6414B /* DateTools.bundle in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F0F08D9918D9E80E00214C6B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F007633F18DE647600A99075 /* Recents_filled.png in Resources */,
F007632118DE5F5E00A99075 /* DateToolsViewController.xib in Resources */,
F0F08DB718D9E80E00214C6B /* Images.xcassets in Resources */,
F007633A18DE63C400A99075 /* TimePeriodsViewController.xib in Resources */,
F0F08DA918D9E80E00214C6B /* InfoPlist.strings in Resources */,
F007634118DE647600A99075 /* Recents.png in Resources */,
0AFD486518F0BBC0004D0FE1 /* DateTools.bundle in Resources */,
F007632E18DE61EE00A99075 /* Calendar.png in Resources */,
F007632F18DE61EE00A99075 /* Calendar@2x.png in Resources */,
F007634018DE647600A99075 /* Recents_filled@2x.png in Resources */,
F007632C18DE61EE00A99075 /* Calendar_filled.png in Resources */,
F007632D18DE61EE00A99075 /* Calendar_filled@2x.png in Resources */,
F007634218DE647600A99075 /* Recents@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F0F08DBA18D9E80E00214C6B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F0F08DC818D9E80E00214C6B /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
908837C41B637C240063096B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
901CF0EA1B6CA9FE00F6414B /* DTTimePeriod.m in Sources */,
901CF0F01B6CA9FE00F6414B /* DTTimePeriodGroup.m in Sources */,
901CF0E81B6CA9FE00F6414B /* DTError.m in Sources */,
901CF0EE1B6CA9FE00F6414B /* DTTimePeriodCollection.m in Sources */,
901CF0E61B6CA9FE00F6414B /* DTConstants.m in Sources */,
901CF0F21B6CA9FE00F6414B /* NSDate+DateTools.m in Sources */,
901CF0EC1B6CA9FE00F6414B /* DTTimePeriodChain.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F0F08D9718D9E80E00214C6B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D935DB441B567FBD00BAA4F0 /* DTConstants.m in Sources */,
F0EE17E718DEB1A10010FAD8 /* DTError.m in Sources */,
F0EE17EB18DEB1A10010FAD8 /* DTTimePeriodGroup.m in Sources */,
F0A426D618D9FDB500E236C0 /* DTTimePeriod.m in Sources */,
F007633418DE628900A99075 /* ExampleNavigationController.m in Sources */,
F0EE17E918DEB1A10010FAD8 /* DTTimePeriodChain.m in Sources */,
F07A1A0818DCC76500B3E9FF /* DTTimePeriodCollection.m in Sources */,
F0F08DAF18D9E80E00214C6B /* AppDelegate.m in Sources */,
F007632518DE5FE300A99075 /* Colours.m in Sources */,
F007632018DE5F5E00A99075 /* DateToolsViewController.m in Sources */,
F0F08DD918D9E94F00214C6B /* NSDate+DateTools.m in Sources */,
F007633918DE63C400A99075 /* TimePeriodsViewController.m in Sources */,
F0F08DAB18D9E80E00214C6B /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F0F08DB818D9E80E00214C6B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F0EE17E818DEB1A10010FAD8 /* DTError.m in Sources */,
F0EE17EC18DEB1A10010FAD8 /* DTTimePeriodGroup.m in Sources */,
F0EE17EA18DEB1A10010FAD8 /* DTTimePeriodChain.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
F0F08DC218D9E80E00214C6B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F0F08D9A18D9E80E00214C6B /* DateToolsExample */;
targetProxy = F0F08DC118D9E80E00214C6B /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
F0F08DA718D9E80E00214C6B /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
F0F08DA818D9E80E00214C6B /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
F0F08DC618D9E80E00214C6B /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
F0F08DC718D9E80E00214C6B /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
908837DC1B637C240063096B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN_UNREACHABLE_CODE = YES;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = DateTools/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.4;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
908837DD1B637C240063096B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN_UNREACHABLE_CODE = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = DateTools/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.4;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
F0F08DCB18D9E80E00214C6B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
F0F08DCC18D9E80E00214C6B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
F0F08DCE18D9E80E00214C6B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "DateToolsExample/DateToolsExample-Prefix.pch";
INFOPLIST_FILE = "DateToolsExample/DateToolsExample-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
F0F08DCF18D9E80E00214C6B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "DateToolsExample/DateToolsExample-Prefix.pch";
INFOPLIST_FILE = "DateToolsExample/DateToolsExample-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
F0F08DD118D9E80E00214C6B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/DateToolsExample.app/DateToolsExample";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "DateToolsExample/DateToolsExample-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "DateToolsExampleTests/DateToolsExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
F0F08DD218D9E80E00214C6B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/DateToolsExample.app/DateToolsExample";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "DateToolsExample/DateToolsExample-Prefix.pch";
INFOPLIST_FILE = "DateToolsExampleTests/DateToolsExampleTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
908837E01B637C240063096B /* Build configuration list for PBXNativeTarget "DateTools" */ = {
isa = XCConfigurationList;
buildConfigurations = (
908837DC1B637C240063096B /* Debug */,
908837DD1B637C240063096B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F0F08D9618D9E80E00214C6B /* Build configuration list for PBXProject "DateToolsExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F0F08DCB18D9E80E00214C6B /* Debug */,
F0F08DCC18D9E80E00214C6B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F0F08DCD18D9E80E00214C6B /* Build configuration list for PBXNativeTarget "DateToolsExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F0F08DCE18D9E80E00214C6B /* Debug */,
F0F08DCF18D9E80E00214C6B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
F0F08DD018D9E80E00214C6B /* Build configuration list for PBXNativeTarget "DateToolsExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F0F08DD118D9E80E00214C6B /* Debug */,
F0F08DD218D9E80E00214C6B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = F0F08D9318D9E80E00214C6B /* Project object */;
}

7
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata generated

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:DateToolsExample.xcodeproj">
</FileRef>
</Workspace>

110
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample.xcodeproj/xcshareddata/xcschemes/DateTools.xcscheme

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "908837C81B637C240063096B"
BuildableName = "DateTools.framework"
BlueprintName = "DateTools"
ReferencedContainer = "container:DateToolsExample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "908837D21B637C240063096B"
BuildableName = "DateToolsTests.xctest"
BlueprintName = "DateToolsTests"
ReferencedContainer = "container:DateToolsExample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "908837D21B637C240063096B"
BuildableName = "DateToolsTests.xctest"
BlueprintName = "DateToolsTests"
ReferencedContainer = "container:DateToolsExample.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "908837C81B637C240063096B"
BuildableName = "DateTools.framework"
BlueprintName = "DateTools"
ReferencedContainer = "container:DateToolsExample.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "908837C81B637C240063096B"
BuildableName = "DateTools.framework"
BlueprintName = "DateTools"
ReferencedContainer = "container:DateToolsExample.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "908837C81B637C240063096B"
BuildableName = "DateTools.framework"
BlueprintName = "DateTools"
ReferencedContainer = "container:DateToolsExample.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

15
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/AppDelegate.h

@ -0,0 +1,15 @@
//
// AppDelegate.h
// DateToolsExample
//
// Created by Matthew York on 3/19/14.
//
//
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;
@end

78
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/AppDelegate.m

@ -0,0 +1,78 @@
//
// AppDelegate.m
// DateToolsExample
//
// Created by Matthew York on 3/19/14.
//
//
#import "AppDelegate.h"
#import "Colours.h"
#import "ExampleNavigationController.h"
#import "DateToolsViewController.h"
#import "TimePeriodsViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self initializeTabBarController];
[self.window setRootViewController:self.tabBarController];
[self.window makeKeyAndVisible];
// Override point for customization after application launch.
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
-(void)initializeTabBarController{
ExampleNavigationController *dtVC = [[ExampleNavigationController alloc] initWithRootViewController:[[DateToolsViewController alloc] initWithNibName:@"DateToolsViewController" bundle:nil]];
ExampleNavigationController *tpVC = [[ExampleNavigationController alloc] initWithRootViewController:[[TimePeriodsViewController alloc] initWithNibName:@"TimePeriodsViewController" bundle:nil]];
//Initialize tab bar controller
self.tabBarController = [[UITabBarController alloc] init];
//Style tab bar
if ([self.tabBarController.tabBar respondsToSelector:@selector(setTranslucent:)]) {
[self.tabBarController.tabBar setTranslucent:NO];
[self.tabBarController.tabBar setTintColor:[UIColor infoBlueColor]];
}
else {
[self.tabBarController.tabBar setBackgroundColor:[UIColor infoBlueColor]];
}
//Add view controllers
self.tabBarController.viewControllers = @[dtVC, tpVC];
}
@end

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar_filled.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Calendar_filled@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

489
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Colours.h

@ -0,0 +1,489 @@
// Copyright (C) 2013 by Benjamin Gordon
//
// Permission is hereby granted, free of charge, to any
// person obtaining a copy of this software and
// associated documentation files (the "Software"), to
// deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "TargetConditionals.h"
#include <Foundation/Foundation.h>
#pragma mark - Static String Keys
static NSString * kColoursRGBA_R = @"RGBA-r";
static NSString * kColoursRGBA_G = @"RGBA-g";
static NSString * kColoursRGBA_B = @"RGBA-b";
static NSString * kColoursRGBA_A = @"RGBA-a";
static NSString * kColoursHSBA_H = @"HSBA-h";
static NSString * kColoursHSBA_S = @"HSBA-s";
static NSString * kColoursHSBA_B = @"HSBA-b";
static NSString * kColoursHSBA_A = @"HSBA-a";
static NSString * kColoursCIE_L = @"LABa-L";
static NSString * kColoursCIE_A = @"LABa-A";
static NSString * kColoursCIE_B = @"LABa-B";
static NSString * kColoursCIE_alpha = @"LABa-a";
static NSString * kColoursCMYK_C = @"CMYK-c";
static NSString * kColoursCMYK_M = @"CMYK-m";
static NSString * kColoursCMYK_Y = @"CMYK-y";
static NSString * kColoursCMYK_K = @"CMYK-k";
#pragma mark - Create correct iOS/OSX interface
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
@interface UIColor (Colours)
#elif TARGET_OS_MAC
#import <AppKit/AppKit.h>
@interface NSColor (Colours)
#endif
#pragma mark - Enums
// Color Scheme Generation Enum
typedef NS_ENUM(NSInteger, ColorScheme) {
ColorSchemeAnalagous,
ColorSchemeMonochromatic,
ColorSchemeTriad,
ColorSchemeComplementary
};
// ColorFormulation Type
typedef NS_ENUM(NSInteger, ColorFormulation) {
ColorFormulationRGBA,
ColorFormulationHSBA,
ColorFormulationLAB,
ColorFormulationCMYK
};
// ColorDistance
typedef NS_ENUM(NSInteger, ColorDistance) {
ColorDistanceCIE76,
ColorDistanceCIE94,
ColorDistanceCIE2000,
};
#pragma mark - Color from Hex/RGBA/HSBA/CIE_LAB/CMYK
/**
Creates a Color from a Hex representation string
@param hexString Hex string that looks like @"#FF0000" or @"FF0000"
@return Color
*/
+ (instancetype)colorFromHexString:(NSString *)hexString;
/**
Creates a Color from an array of 4 NSNumbers (r,g,b,a)
@param rgbaArray 4 NSNumbers for rgba between 0 - 1
@return Color
*/
+ (instancetype)colorFromRGBAArray:(NSArray *)rgbaArray;
/**
Creates a Color from a dictionary of 4 NSNumbers
Keys: kColoursRGBA_R, kColoursRGBA_G, kColoursRGBA_B, kColoursRGBA_A
@param rgbaDictionary 4 NSNumbers for rgba between 0 - 1
@return Color
*/
+ (instancetype)colorFromRGBADictionary:(NSDictionary *)rgbaDict;
/**
Creates a Color from an array of 4 NSNumbers (h,s,b,a)
@param hsbaArray 4 NSNumbers for rgba between 0 - 1
@return Color
*/
+ (instancetype)colorFromHSBAArray:(NSArray *)hsbaArray;
/**
Creates a Color from a dictionary of 4 NSNumbers
Keys: kColoursHSBA_H, kColoursHSBA_S, kColoursHSBA_B, kColoursHSBA_A
@param hsbaDictionary 4 NSNumbers for rgba between 0 - 1
@return Color
*/
+ (instancetype)colorFromHSBADictionary:(NSDictionary *)hsbaDict;
/**
Creates a Color from an array of 4 NSNumbers (L,a,b,alpha)
@param colors 4 NSNumbers for CIE_LAB between 0 - 1
@return Color
*/
+ (instancetype)colorFromCIE_LabArray:(NSArray *)colors;
/**
Creates a Color from a dictionary of 4 NSNumbers
Keys: kColoursCIE_L, kColoursCIE_A, kColoursCIE_B, kColoursCIE_alpha
@param colors 4 NSNumbers for CIE_LAB between 0 - 1
@return Color
*/
+ (instancetype)colorFromCIE_LabDictionary:(NSDictionary *)colors;
/**
Creates a Color from an array of 4 NSNumbers (C,M,Y,K)
@param colors 4 NSNumbers for CMYK between 0 - 1
@return Color
*/
+ (instancetype)colorFromCMYKArray:(NSArray *)cmyk;
/**
Creates a Color from a dictionary of 4 NSNumbers
Keys: kColoursCMYK_C, kColoursCMYK_M, kColoursCMYK_Y, kColoursCMYK_K
@param colors 4 NSNumbers for CMYK between 0 - 1
@return Color
*/
+ (instancetype)colorFromCMYKDictionary:(NSDictionary *)cmyk;
#pragma mark - Hex/RGBA/HSBA/CIE_LAB/CMYK from Color
/**
Creates a Hex representation from a Color
@return NSString
*/
- (NSString *)hexString;
/**
Creates an array of 4 NSNumbers representing the float values of r, g, b, a in that order.
@return NSArray
*/
- (NSArray *)rgbaArray;
/**
Creates an array of 4 NSNumbers representing the float values of h, s, b, a in that order.
@return NSArray
*/
- (NSArray *)hsbaArray;
/**
Creates a dictionary of 4 NSNumbers representing float values with keys: kColoursRGBA_R, kColoursRGBA_G, kColoursRGBA_B, kColoursRGBA_A
@return NSDictionary
*/
- (NSDictionary *)rgbaDictionary;
/**
Creates a dictionary of 4 NSNumbers representing float values with keys: kColoursHSBA_H, kColoursHSBA_S, kColoursHSBA_B, kColoursHSBA_A
@return NSDictionary
*/
- (NSDictionary *)hsbaDictionary;
/**
* Creates an array of 4 NSNumbers representing the float values of L*, a, b, alpha in that order.
*
* @return NSArray
*/
- (NSArray *)CIE_LabArray;
/**
* Creates a dictionary of 4 NSNumbers representing the float values with keys: kColoursCIE_L, kColoursCIE_A, kColoursCIE_B, kColoursCIE_alpha
*
* @return NSDictionary
*/
- (NSDictionary *)CIE_LabDictionary;
/**
* Creates an array of 4 NSNumbers representing the float values of C, M, Y, K in that order.
*
* @return NSArray
*/
- (NSArray *)cmykArray;
/**
* Creates a dictionary of 4 NSNumbers representing the float values with keys: kColoursCMYK_C, kColoursCMYK_M, kColoursCMYK_Y, kColoursCMYK_K
*
* @return NSDictionary
*/
- (NSDictionary *)cmykDictionary;
#pragma mark - Color Components
/**
* Creates an NSDictionary with RGBA and HSBA color components inside.
*
* @return NSDictionary
*/
- (NSDictionary *)colorComponents;
/**
* Returns the red value from an RGBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)red;
/**
* Returns the green value from an RGBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)green;
/**
* Returns the blue value from an RGBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)blue;
/**
* Returns the hue value from an HSBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)hue;
/**
* Returns the saturation value from an HSBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)saturation;
/**
* Returns the brightness value from an HSBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)brightness;
/**
* Returns the alpha value from an RGBA formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)alpha;
/**
* Returns the lightness value from a CIELAB formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)CIE_Lightness;
/**
* Returns the a value from a CIELAB formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)CIE_a;
/**
* Returns the b value from a CIELAB formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)CIE_b;
/**
* Returns the cyan value from a CMYK formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)cyan;
/**
* Returns the magenta value from a CMYK formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)magenta;
/**
* Returns the yellow value from a CMYK formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)yellow;
/**
* Returns the black (K) value from a CMYK formulation of the UIColor.
*
* @return CGFloat
*/
- (CGFloat)keyBlack;
#pragma mark - 4 Color Scheme from Color
/**
Creates an NSArray of 4 Colors that complement the Color.
@param type ColorSchemeAnalagous, ColorSchemeMonochromatic, ColorSchemeTriad, ColorSchemeComplementary
@return NSArray
*/
- (NSArray *)colorSchemeOfType:(ColorScheme)type;
#pragma mark - Contrasting Color from Color
/**
Creates either [Color whiteColor] or [Color blackColor] depending on if the color this method is run on is dark or light.
@return Color
*/
- (instancetype)blackOrWhiteContrastingColor;
#pragma mark - Complementary Color
/**
Creates a complementary color - a color directly opposite it on the color wheel.
@return Color
*/
- (instancetype)complementaryColor;
#pragma mark - Distance between Colors
/**
* Returns a float of the distance between 2 colors. Defaults to the
* CIE94 specification found here: http://en.wikipedia.org/wiki/Color_difference
*
* @param color Color to check self with.
*
* @return CGFloat
*/
- (CGFloat)distanceFromColor:(id)color;
/**
* Returns a float of the distance between 2 colors, using one of
*
*
* @param color Color to check against
* @param distanceType Formula to calculate with
*
* @return CGFloat
*/
- (CGFloat)distanceFromColor:(id)color type:(ColorDistance)distanceType;
#pragma mark - Colors
// System Colors
+ (instancetype)infoBlueColor;
+ (instancetype)successColor;
+ (instancetype)warningColor;
+ (instancetype)dangerColor;
// Whites
+ (instancetype)antiqueWhiteColor;
+ (instancetype)oldLaceColor;
+ (instancetype)ivoryColor;
+ (instancetype)seashellColor;
+ (instancetype)ghostWhiteColor;
+ (instancetype)snowColor;
+ (instancetype)linenColor;
// Grays
+ (instancetype)black25PercentColor;
+ (instancetype)black50PercentColor;
+ (instancetype)black75PercentColor;
+ (instancetype)warmGrayColor;
+ (instancetype)coolGrayColor;
+ (instancetype)charcoalColor;
// Blues
+ (instancetype)tealColor;
+ (instancetype)steelBlueColor;
+ (instancetype)robinEggColor;
+ (instancetype)pastelBlueColor;
+ (instancetype)turquoiseColor;
+ (instancetype)skyBlueColor;
+ (instancetype)indigoColor;
+ (instancetype)denimColor;
+ (instancetype)blueberryColor;
+ (instancetype)cornflowerColor;
+ (instancetype)babyBlueColor;
+ (instancetype)midnightBlueColor;
+ (instancetype)fadedBlueColor;
+ (instancetype)icebergColor;
+ (instancetype)waveColor;
// Greens
+ (instancetype)emeraldColor;
+ (instancetype)grassColor;
+ (instancetype)pastelGreenColor;
+ (instancetype)seafoamColor;
+ (instancetype)paleGreenColor;
+ (instancetype)cactusGreenColor;
+ (instancetype)chartreuseColor;
+ (instancetype)hollyGreenColor;
+ (instancetype)oliveColor;
+ (instancetype)oliveDrabColor;
+ (instancetype)moneyGreenColor;
+ (instancetype)honeydewColor;
+ (instancetype)limeColor;
+ (instancetype)cardTableColor;
// Reds
+ (instancetype)salmonColor;
+ (instancetype)brickRedColor;
+ (instancetype)easterPinkColor;
+ (instancetype)grapefruitColor;
+ (instancetype)pinkColor;
+ (instancetype)indianRedColor;
+ (instancetype)strawberryColor;
+ (instancetype)coralColor;
+ (instancetype)maroonColor;
+ (instancetype)watermelonColor;
+ (instancetype)tomatoColor;
+ (instancetype)pinkLipstickColor;
+ (instancetype)paleRoseColor;
+ (instancetype)crimsonColor;
// Purples
+ (instancetype)eggplantColor;
+ (instancetype)pastelPurpleColor;
+ (instancetype)palePurpleColor;
+ (instancetype)coolPurpleColor;
+ (instancetype)violetColor;
+ (instancetype)plumColor;
+ (instancetype)lavenderColor;
+ (instancetype)raspberryColor;
+ (instancetype)fuschiaColor;
+ (instancetype)grapeColor;
+ (instancetype)periwinkleColor;
+ (instancetype)orchidColor;
// Yellows
+ (instancetype)goldenrodColor;
+ (instancetype)yellowGreenColor;
+ (instancetype)bananaColor;
+ (instancetype)mustardColor;
+ (instancetype)buttermilkColor;
+ (instancetype)goldColor;
+ (instancetype)creamColor;
+ (instancetype)lightCreamColor;
+ (instancetype)wheatColor;
+ (instancetype)beigeColor;
// Oranges
+ (instancetype)peachColor;
+ (instancetype)burntOrangeColor;
+ (instancetype)pastelOrangeColor;
+ (instancetype)cantaloupeColor;
+ (instancetype)carrotColor;
+ (instancetype)mandarinColor;
// Browns
+ (instancetype)chiliPowderColor;
+ (instancetype)burntSiennaColor;
+ (instancetype)chocolateColor;
+ (instancetype)coffeeColor;
+ (instancetype)cinnamonColor;
+ (instancetype)almondColor;
+ (instancetype)eggshellColor;
+ (instancetype)sandColor;
+ (instancetype)mudColor;
+ (instancetype)siennaColor;
+ (instancetype)dustColor;
@end

1303
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Colours.m

File diff suppressed because it is too large Load Diff

36
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsExample-Info.plist

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.mattyork.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
</dict>
</plist>

16
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsExample-Prefix.pch

@ -0,0 +1,16 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif

13
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsViewController.h

@ -0,0 +1,13 @@
//
// DateToolsViewController.h
// DateToolsExample
//
// Created by Matthew York on 3/22/14.
//
//
#import <UIKit/UIKit.h>
@interface DateToolsViewController : UIViewController
@end

114
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsViewController.m

@ -0,0 +1,114 @@
//
// DateToolsViewController.m
// DateToolsExample
//
// Created by Matthew York on 3/22/14.
//
//
#import "DateToolsViewController.h"
#import "NSDate+DateTools.h"
#import "Colours.h"
@interface DateToolsViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *MasterScrollView;
@property NSTimer *updateTimer;
@property NSDate *selectedDate;
@property NSDateFormatter *formatter;
//Time Ago View
@property (strong, nonatomic) IBOutlet UIView *TimeAgoView;
@property (weak, nonatomic) IBOutlet UILabel *TimeAgoLabel;
@property (weak, nonatomic) IBOutlet UISlider *TimeAgoSlider;
@property (weak, nonatomic) IBOutlet UILabel *SecondsLabel;
@property (weak, nonatomic) IBOutlet UILabel *MinutesLabel;
@property (weak, nonatomic) IBOutlet UILabel *HoursLabel;
@property (weak, nonatomic) IBOutlet UILabel *DaysLabel;
@property (weak, nonatomic) IBOutlet UILabel *WeeksLabel;
@property (weak, nonatomic) IBOutlet UILabel *MonthsLabel;
@property (weak, nonatomic) IBOutlet UILabel *YearsLabel;
@end
@implementation DateToolsViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
self.title = @"NSDate+DateTools";
self.tabBarItem.title = @"NSDate+DateTools";
self.tabBarItem.image = [UIImage imageNamed:@"Calendar"];
self.tabBarItem.selectedImage = [UIImage imageNamed:@"Calendar_filled"];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
//Setup date formatter
self.formatter = [[NSDateFormatter alloc] init];
[self.formatter setDateFormat:@"HHmm MMMM d yyyy"];
//Set initial date
self.selectedDate = [self.formatter dateFromString:@"0000 November 5 1605"];
self.TimeAgoSlider.value = [self.selectedDate timeIntervalSinceNow];
//Set up timer for updating UI
self.updateTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(updateTimeAgoLabels) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.updateTimer forMode:NSRunLoopCommonModes];
[self setupViews];
[self updateTimeAgoLabels];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)setupViews{
[self.MasterScrollView addSubview:self.TimeAgoView];
[self.MasterScrollView setContentSize:self.TimeAgoView.frame.size];
self.SecondsLabel.textColor = [UIColor tealColor];
self.MinutesLabel.textColor = [UIColor moneyGreenColor];
self.HoursLabel.textColor = [UIColor salmonColor];
self.DaysLabel.textColor = [UIColor violetColor];
self.WeeksLabel.textColor = [UIColor tealColor];
self.MonthsLabel.textColor = [UIColor waveColor];
self.YearsLabel.textColor = [UIColor bananaColor];
}
#pragma mark - Update
-(void)updateTimeAgoLabels{
//Account for now
if (self.TimeAgoSlider.value == 0) {
self.selectedDate = [NSDate date];
}
//Set time ago label
self.TimeAgoLabel.text = [self.formatter stringFromDate:self.selectedDate];
//Set date component labels
self.SecondsLabel.text = [NSString stringWithFormat:@"%.0f", self.selectedDate.secondsAgo];
self.MinutesLabel.text = [NSString stringWithFormat:@"%.0f", self.selectedDate.minutesAgo];
self.HoursLabel.text = [NSString stringWithFormat:@"%.0f", self.selectedDate.hoursAgo];
self.DaysLabel.text = [NSString stringWithFormat:@"%ld", (long)self.selectedDate.daysAgo];
self.WeeksLabel.text = [NSString stringWithFormat:@"%ld", (long)self.selectedDate.weeksAgo];
self.MonthsLabel.text = [NSString stringWithFormat:@"%ld", (long)self.selectedDate.monthsAgo];
self.YearsLabel.text = [NSString stringWithFormat:@"%ld", (long)self.selectedDate.yearsAgo];
}
- (IBAction)sliderValueDidChange:(UISlider *)sender {
self.selectedDate = [NSDate dateWithTimeIntervalSinceNow:sender.value];
//Update UI
[self updateTimeAgoLabels];
}
@end

157
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/DateToolsViewController.xib

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="DateToolsViewController">
<connections>
<outlet property="DaysLabel" destination="oi5-t8-fNy" id="GgT-Lk-FT3"/>
<outlet property="HoursLabel" destination="WqD-FV-aVl" id="pTK-Uy-ylH"/>
<outlet property="MasterScrollView" destination="a0E-oy-m5K" id="LqT-NE-sZ3"/>
<outlet property="MinutesLabel" destination="qif-H4-oZt" id="GuZ-Eo-bzM"/>
<outlet property="MonthsLabel" destination="LBL-Ub-yTU" id="MGd-pK-0u5"/>
<outlet property="SecondsLabel" destination="sSP-X5-Nmd" id="gmm-sS-gWL"/>
<outlet property="TimeAgoLabel" destination="EH7-dt-voS" id="yjb-xi-eoa"/>
<outlet property="TimeAgoSlider" destination="Ilx-u5-ewa" id="66N-Eh-a2v"/>
<outlet property="TimeAgoView" destination="sBg-B5-1uD" id="Xi0-AY-Ook"/>
<outlet property="WeeksLabel" destination="TwH-cp-s2L" id="PP6-Rc-P3g"/>
<outlet property="YearsLabel" destination="98M-xc-rbg" id="MkQ-Xb-BuE"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="64" width="320" height="455"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="a0E-oy-m5K">
<rect key="frame" x="0.0" y="0.0" width="320" height="455"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</scrollView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" translucent="NO" prompted="NO"/>
<simulatedTabBarMetrics key="simulatedBottomBarMetrics" translucent="NO"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
</view>
<view contentMode="scaleToFill" id="sBg-B5-1uD" userLabel="Time Ago View">
<rect key="frame" x="0.0" y="0.0" width="320" height="692"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TIME AGO SINCE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="jrc-yw-Crh">
<rect key="frame" x="96" y="10" width="129" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.050980392159999999" green="0.30980392159999998" blue="0.5450980392" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="-50000000" minValue="-15000000000" maxValue="0.0" id="Ilx-u5-ewa">
<rect key="frame" x="10" y="76" width="300" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="sliderValueDidChange:" destination="-1" eventType="valueChanged" id="vrk-5J-U4p"/>
</connections>
</slider>
<view alpha="0.10000000000000001" contentMode="scaleToFill" id="qvf-mp-Zhq">
<rect key="frame" x="12" y="475" width="296" height="1"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0000 November 5 1605" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="EH7-dt-voS">
<rect key="frame" x="10" y="35" width="300" height="33"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Thin" family="Helvetica Neue" pointSize="23"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="sSP-X5-Nmd">
<rect key="frame" x="43" y="115" width="164" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Seconds" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Cp5-bp-FpP">
<rect key="frame" x="215" y="118" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="qif-H4-oZt">
<rect key="frame" x="12" y="151" width="195" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Minutes" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="kie-h4-KcQ">
<rect key="frame" x="215" y="154" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="WqD-FV-aVl">
<rect key="frame" x="10" y="188" width="197" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Hours" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="104-RJ-OlQ">
<rect key="frame" x="215" y="191" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="oi5-t8-fNy">
<rect key="frame" x="12" y="224" width="195" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Days" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="6Lp-Q4-Jxl">
<rect key="frame" x="215" y="227" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="TwH-cp-s2L">
<rect key="frame" x="12" y="260" width="195" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Weeks" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Dff-Iw-caL">
<rect key="frame" x="215" y="263" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="LBL-Ub-yTU">
<rect key="frame" x="12" y="296" width="195" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Months" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="was-qe-6k4">
<rect key="frame" x="215" y="299" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="98M-xc-rbg">
<rect key="frame" x="12" y="332" width="195" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Years" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="zAb-Xp-Igb">
<rect key="frame" x="215" y="335" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
</view>
</objects>
</document>

13
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/ExampleNavigationController.h

@ -0,0 +1,13 @@
//
// ExampleNavigationController.h
// DateToolsExample
//
// Created by Matthew York on 3/22/14.
//
//
#import <UIKit/UIKit.h>
@interface ExampleNavigationController : UINavigationController
@end

50
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/ExampleNavigationController.m

@ -0,0 +1,50 @@
//
// ExampleNavigationController.m
// DateToolsExample
//
// Created by Matthew York on 3/22/14.
//
//
#import "ExampleNavigationController.h"
#import "Colours.h"
@interface ExampleNavigationController ()
@end
@implementation ExampleNavigationController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([self.navigationBar respondsToSelector:@selector(setTranslucent:)]) {
self.navigationBar.translucent = NO;
self.navigationBar.barTintColor = [UIColor infoBlueColor];
self.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue-Light" size:21.0]};
[[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
@end

23
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Images.xcassets/AppIcon.appiconset/Contents.json

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

23
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Images.xcassets/LaunchImage.launchimage/Contents.json

@ -0,0 +1,23 @@
{
"images" : [
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"subtype" : "retina4",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents_filled.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/Recents_filled@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

13
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/TimePeriodsViewController.h

@ -0,0 +1,13 @@
//
// TimePeriodsViewController.h
// DateToolsExample
//
// Created by Matthew York on 3/22/14.
//
//
#import <UIKit/UIKit.h>
@interface TimePeriodsViewController : UIViewController
@end

188
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/TimePeriodsViewController.m

@ -0,0 +1,188 @@
//
// TimePeriodsViewController.m
// DateToolsExample
//
// Created by Matthew York on 3/22/14.
//
//
#import "TimePeriodsViewController.h"
#import "DTTimePeriod.h"
@interface TimePeriodsViewController ()
@property (weak, nonatomic) IBOutlet UIView *AView;
@property (weak, nonatomic) IBOutlet UIView *BView;
@property (weak, nonatomic) IBOutlet UIView *CView;
//Relationships
@property (weak, nonatomic) IBOutlet UILabel *ABRelationship;
@property (weak, nonatomic) IBOutlet UILabel *ACRelationship;
@property (weak, nonatomic) IBOutlet UILabel *BARelationship;
@property (weak, nonatomic) IBOutlet UILabel *BCRelationship;
@property (weak, nonatomic) IBOutlet UILabel *CARelationship;
@property (weak, nonatomic) IBOutlet UILabel *CBRelationship;
@end
@implementation TimePeriodsViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
// Custom initialization
self.title = @"Time Periods";
self.tabBarItem.title = @"Time Periods";
self.tabBarItem.image = [UIImage imageNamed:@"Recents"];
self.tabBarItem.selectedImage = [UIImage imageNamed:@"Recents_filled"];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//Setup pan recognizers
UIPanGestureRecognizer *recognizerA = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[recognizerA setMaximumNumberOfTouches:1];
[recognizerA setMinimumNumberOfTouches:1];
[self.AView addGestureRecognizer:recognizerA];
UIPanGestureRecognizer *recognizerB = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[recognizerB setMaximumNumberOfTouches:1];
[recognizerB setMinimumNumberOfTouches:1];
[self.BView addGestureRecognizer:recognizerB];
UIPanGestureRecognizer *recognizerC = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[recognizerC setMaximumNumberOfTouches:1];
[recognizerC setMinimumNumberOfTouches:1];
[self.CView addGestureRecognizer:recognizerC];
//Set initial relationships
[self updateRelationships];
//Set up info button for alert
[self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Info" style:UIBarButtonItemStyleBordered target:self action:@selector(showInfo)]];
}
-(void)showInfo{
[[[UIAlertView alloc] initWithTitle:@"Legend" message:@"Ins. - Inside\nEnc. - Enclosing\n\nFor more information on the various DTTimePeriod relationships, please see the DateTools README on GitHub." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil] show];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Pan Recognizers
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.frame = CGRectMake(MAX(10, MIN((self.view.frame.size.width-recognizer.view.frame.size.width - 10), recognizer.view.frame.origin.x + translation.x)), recognizer.view.frame.origin.y, recognizer.view.frame.size.width, recognizer.view.frame.size.height);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
[self updateRelationships];
}
#pragma mark - Update
-(void)updateRelationships{
NSInteger AOffset = -300 + (self.AView.frame.origin.x - 10);
NSInteger BOffset = -300 + (self.BView.frame.origin.x - 10);
NSInteger COffset = -300 + (self.CView.frame.origin.x - 10);
//AOffset *= 4;
//BOffset *= 4;
//COffset *= 4;
DTTimePeriod *aPeriod = [DTTimePeriod timePeriodWithStartDate:[NSDate dateWithTimeIntervalSince1970:AOffset] endDate:[NSDate dateWithTimeIntervalSince1970:AOffset+self.AView.frame.size.width]];
DTTimePeriod *bPeriod = [DTTimePeriod timePeriodWithStartDate:[NSDate dateWithTimeIntervalSince1970:BOffset] endDate:[NSDate dateWithTimeIntervalSince1970:BOffset+self.BView.frame.size.width]];
DTTimePeriod *cPeriod = [DTTimePeriod timePeriodWithStartDate:[NSDate dateWithTimeIntervalSince1970:COffset] endDate:[NSDate dateWithTimeIntervalSince1970:COffset+self.CView.frame.size.width]];
//Set A relationships
self.ABRelationship.text = [self stringForRelation:[aPeriod relationToPeriod:bPeriod] forPeriodName:@"B"];
self.ACRelationship.text = [self stringForRelation:[aPeriod relationToPeriod:cPeriod] forPeriodName:@"C"];
//Set B relationships
self.BARelationship.text = [self stringForRelation:[bPeriod relationToPeriod:aPeriod] forPeriodName:@"A"];
self.BCRelationship.text = [self stringForRelation:[bPeriod relationToPeriod:cPeriod] forPeriodName:@"C"];
//Set C relationships
self.CARelationship.text = [self stringForRelation:[cPeriod relationToPeriod:aPeriod] forPeriodName:@"A"];
self.CBRelationship.text = [self stringForRelation:[cPeriod relationToPeriod:bPeriod] forPeriodName:@"B"];
}
-(NSString *)stringForRelation:(DTTimePeriodRelation)relation forPeriodName:(NSString *)periodName{
switch (relation) {
case DTTimePeriodRelationAfter:
return [NSString stringWithFormat:@"After %@", periodName];
case DTTimePeriodRelationBefore:
return [NSString stringWithFormat:@"Before %@", periodName];
case DTTimePeriodRelationEnclosing:
return [NSString stringWithFormat:@"Enclosing %@", periodName];
case DTTimePeriodRelationEnclosingEndTouching:
return [NSString stringWithFormat:@"Enc. End Touch %@", periodName];
case DTTimePeriodRelationEnclosingStartTouching:
return [NSString stringWithFormat:@"Enc. Start Touch %@", periodName];
case DTTimePeriodRelationEndInside:
return [NSString stringWithFormat:@"Ends Inside %@", periodName];
case DTTimePeriodRelationEndTouching:
return [NSString stringWithFormat:@"Ends Touching %@", periodName];
case DTTimePeriodRelationExactMatch:
return [NSString stringWithFormat:@"Exact Match %@", periodName];
case DTTimePeriodRelationInside:
return [NSString stringWithFormat:@"Inside %@", periodName];
case DTTimePeriodRelationInsideEndTouching:
return [NSString stringWithFormat:@"Ins. End Touch %@", periodName];
case DTTimePeriodRelationInsideStartTouching:
return [NSString stringWithFormat:@"Ins. Start Touch %@", periodName];
case DTTimePeriodRelationNone:
return [NSString stringWithFormat:@"No Relation to %@", periodName];
case DTTimePeriodRelationStartInside:
return [NSString stringWithFormat:@"Starts Inside %@", periodName];
case DTTimePeriodRelationStartTouching:
return [NSString stringWithFormat:@"Starts Touching %@", periodName];
default:
break;
}
typedef NS_ENUM(NSUInteger, DTTimePeriodRelation){
DTTimePeriodRelationAfter,
DTTimePeriodRelationStartTouching,
DTTimePeriodRelationStartInside,
DTTimePeriodRelationInsideStartTouching,
DTTimePeriodRelationEnclosingStartTouching,
DTTimePeriodRelationEnclosing,
DTTimePeriodRelationEnclosingEndTouching,
DTTimePeriodRelationExactMatch,
DTTimePeriodRelationInside,
DTTimePeriodRelationInsideEndTouching,
DTTimePeriodRelationEndInside,
DTTimePeriodRelationEndTouching,
DTTimePeriodRelationBefore,
DTTimePeriodRelationNone //One or more of the dates does not exist
};
}
@end

162
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/TimePeriodsViewController.xib

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="TimePeriodsViewController">
<connections>
<outlet property="ABRelationship" destination="aZl-UK-axj" id="0Po-Gl-Zbi"/>
<outlet property="ACRelationship" destination="KWr-Jt-tUe" id="jfD-Z7-eIY"/>
<outlet property="AView" destination="VEN-2r-CTE" id="810-Xg-6s6"/>
<outlet property="BARelationship" destination="THO-cZ-0tr" id="OqW-4e-ArN"/>
<outlet property="BCRelationship" destination="sy5-9O-y8H" id="qnP-1k-COW"/>
<outlet property="BView" destination="4mX-lz-tpO" id="3sY-RW-IOf"/>
<outlet property="CARelationship" destination="1mP-vo-zF1" id="bPp-e0-AiH"/>
<outlet property="CBRelationship" destination="nfJ-Ka-P2U" id="eX6-0Z-g5c"/>
<outlet property="CView" destination="sVD-og-jP4" id="zQh-NE-AsK"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="64" width="320" height="367"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" id="VEN-2r-CTE">
<rect key="frame" x="10" y="67" width="160" height="42"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="TFo-pD-Rfw">
<rect key="frame" x="58" y="10" width="42" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="19"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.1572270184" green="0.74095618210000003" blue="0.17858891730000001" alpha="1" colorSpace="calibratedRGB"/>
</view>
<view contentMode="scaleToFill" id="sVD-og-jP4">
<rect key="frame" x="85" y="167" width="40" height="42"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="C" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="NVH-BQ-S3L">
<rect key="frame" x="-1" y="10" width="42" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="19"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.2117647231" green="0.44705885649999999" blue="0.99215692280000001" alpha="1" colorSpace="deviceRGB"/>
</view>
<view contentMode="scaleToFill" id="4mX-lz-tpO">
<rect key="frame" x="65" y="117" width="80" height="42"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2DN-M9-MQT">
<rect key="frame" x="19" y="10" width="42" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="19"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.88428711891174316" green="0.0" blue="0.7876514196395874" alpha="1" colorSpace="calibratedRGB"/>
</view>
<view alpha="0.10000000000000001" contentMode="scaleToFill" id="HoF-9S-wKx">
<rect key="frame" x="16" y="224" width="295" height="1"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RELATIONSHIPS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="jwd-8w-ZQD">
<rect key="frame" x="75" y="233" width="171" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Drag the time periods to change their relationships" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tN7-2N-W1P">
<rect key="frame" x="10" y="13" width="301" height="39"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5ae-cp-Gs3">
<rect key="frame" x="20" y="258" width="69" height="33"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="28"/>
<color key="textColor" red="0.1572270184" green="0.74095618210000003" blue="0.17858891730000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="P41-G7-kyM">
<rect key="frame" x="128" y="258" width="69" height="33"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="28"/>
<color key="textColor" red="0.87450987100601196" green="0.11764706671237946" blue="0.78039222955703735" alpha="1" colorSpace="deviceRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="C" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vJR-Fl-rMZ">
<rect key="frame" x="236" y="258" width="69" height="33"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="28"/>
<color key="textColor" red="0.2117647231" green="0.44705885649999999" blue="0.99215692280000001" alpha="1" colorSpace="deviceRGB"/>
<nil key="highlightedColor"/>
</label>
<view alpha="0.10000000000000001" contentMode="scaleToFill" id="sb3-S4-f13">
<rect key="frame" x="108" y="262" width="1" height="80"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
<view alpha="0.10000000000000001" contentMode="scaleToFill" id="Hti-k8-s4Z">
<rect key="frame" x="216" y="262" width="1" height="80"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B Relationship" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="aZl-UK-axj">
<rect key="frame" x="4" y="295" width="100" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="11"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="C Relationship" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KWr-Jt-tUe">
<rect key="frame" x="4" y="315" width="100" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="11"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A Relationship" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="THO-cZ-0tr">
<rect key="frame" x="110" y="295" width="100" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="11"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="C Relationship" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="sy5-9O-y8H">
<rect key="frame" x="110" y="315" width="100" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="11"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A relationship" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="1mP-vo-zF1">
<rect key="frame" x="218" y="295" width="100" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="11"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B Relationship" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="nfJ-Ka-P2U">
<rect key="frame" x="218" y="315" width="100" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="11"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" translucent="NO" prompted="NO"/>
<simulatedTabBarMetrics key="simulatedBottomBarMetrics" translucent="NO"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics"/>
</view>
</objects>
</document>

2
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/en.lproj/InfoPlist.strings

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

18
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExample/main.m

@ -0,0 +1,18 @@
//
// main.m
// DateToolsExample
//
// Created by Matthew York on 3/19/14.
//
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

22
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExampleTests/DateToolsExampleTests-Info.plist

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.mattyork.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

2
Clocker/Date Tools/DateTools-master/Examples/DateToolsExample/DateToolsExampleTests/en.lproj/InfoPlist.strings

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

BIN
Clocker/Images/Sunrise-512x512.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save