Browse Source

Deleting all old files.

pull/92/head
Abhishek Banthia 6 years ago
parent
commit
a29ddf65ab
  1. BIN
      .DS_Store
  2. BIN
      Clocker-Preview.gif
  3. 646
      Clocker.xcodeproj/project.pbxproj
  4. 7
      Clocker.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  5. BIN
      Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  6. 17
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  7. 98
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/Clocker.xcscheme
  8. 22
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist
  9. 156
      Clocker/AboutUsWindow/CLAboutUsView.xib
  10. 13
      Clocker/AboutUsWindow/CLAboutUsViewController.h
  11. 50
      Clocker/AboutUsWindow/CLAboutUsViewController.m
  12. 39
      Clocker/ApplicationDelegate.h
  13. 167
      Clocker/ApplicationDelegate.m
  14. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect
  15. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Headers
  16. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Resources
  17. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/ApptentiveConnect
  18. 120
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATAppRatingFlow.h
  19. 95
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATConnect.h
  20. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/ATFeedbackWindow.nib
  21. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
  22. 44
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/Info.plist
  23. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info.png
  24. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info@2x.png
  25. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/Current
  26. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect
  27. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Headers
  28. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Resources
  29. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/ApptentiveConnect
  30. 120
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATAppRatingFlow.h
  31. 95
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATConnect.h
  32. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/ATFeedbackWindow.nib
  33. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
  34. 44
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/Info.plist
  35. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info.png
  36. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info@2x.png
  37. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/Current
  38. 2
      Clocker/ApptentiveConnect/ApptentiveConnect/resources/English.lproj/InfoPlist.strings
  39. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/resources/English.lproj/Localizable.strings
  40. 28
      Clocker/ApptentiveConnect/ApptentiveConnect/resources/Info.plist
  41. 7
      Clocker/ApptentiveConnect/ApptentiveConnect/source/ApptentiveConnect_Prefix.pch
  42. 36
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Controllers/ATFeedbackWindowController.h
  43. 378
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Controllers/ATFeedbackWindowController.m
  44. 15
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATConnect_FeedbackWindowPrivate.h
  45. 19
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATConnect_FeedbackWindowPrivate.m
  46. 16
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageButton.h
  47. 18
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageButton.m
  48. 17
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageView.h
  49. 27
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageView.m
  50. 17
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATPlaceholderTextView.h
  51. 65
      Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATPlaceholderTextView.m
  52. 17
      Clocker/ApptentiveConnect/ApptentiveConnect/tests/ATSampleTest.h
  53. 17
      Clocker/ApptentiveConnect/ApptentiveConnect/tests/ATSampleTest.m
  54. 22
      Clocker/ApptentiveConnect/ApptentiveConnect/tests/ApptentiveUnitTests-Info.plist
  55. 249
      Clocker/ApptentiveConnect/ApptentiveConnect/xibs/ATFeedbackWindow.xib
  56. 34
      Clocker/ApptentiveConnect/CHANGELOG.md
  57. 9
      Clocker/ApptentiveConnect/CONTRIBUTING.md
  58. 2
      Clocker/ApptentiveConnect/FeedbackDemo/English.lproj/InfoPlist.strings
  59. 3857
      Clocker/ApptentiveConnect/FeedbackDemo/English.lproj/MainMenu.xib
  60. 32
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo-Info.plist
  61. 416
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/project.pbxproj
  62. 7
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  63. BIN
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  64. 91
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/FeedbackDemo.xcscheme
  65. 22
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist
  66. 22
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemoAppDelegate.h
  67. 39
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemoAppDelegate.m
  68. 7
      Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo_Prefix.pch
  69. BIN
      Clocker/ApptentiveConnect/FeedbackDemo/art/ApptentiveLogo.icns
  70. 11
      Clocker/ApptentiveConnect/FeedbackDemo/defines.h
  71. 14
      Clocker/ApptentiveConnect/FeedbackDemo/main.m
  72. 24
      Clocker/ApptentiveConnect/LICENSE.txt
  73. 125
      Clocker/ApptentiveConnect/README.md
  74. 28
      Clocker/ApptentiveConnect/apptentive-osx.podspec
  75. BIN
      Clocker/ApptentiveConnect/etc/screenshots/integration_step1.png
  76. BIN
      Clocker/ApptentiveConnect/etc/screenshots/integration_step2.png
  77. BIN
      Clocker/ApptentiveConnect/etc/screenshots/integration_step3.png
  78. BIN
      Clocker/ApptentiveConnect/etc/screenshots/integration_step4.png
  79. 40
      Clocker/BackgroundView.h
  80. 148
      Clocker/BackgroundView.m
  81. 51
      Clocker/CLOneWindow/CLOneWindow.xib
  82. 20
      Clocker/CLOneWindow/CLOneWindowController.h
  83. 69
      Clocker/CLOneWindow/CLOneWindowController.m
  84. 17
      Clocker/CLRatingCellView.h
  85. 111
      Clocker/CLRatingCellView.m
  86. 50
      Clocker/Clocker-Info.plist
  87. 9
      Clocker/Clocker-Prefix.pch
  88. 10
      Clocker/Clocker.entitlements
  89. 36
      Clocker/ColoredButton.h
  90. 61
      Clocker/ColoredButton.m
  91. 21
      Clocker/Custom Table Cell Views/CLTimezoneCellView.h
  92. 69
      Clocker/Custom Table Cell Views/CLTimezoneCellView.m
  93. BIN
      Clocker/Images/ClockerIcon-16.png
  94. BIN
      Clocker/Images/ClockerIcon-256.png
  95. BIN
      Clocker/Images/FB-FindUsonFacebook-online-144.png
  96. BIN
      Clocker/Images/PowerIcon-White.png
  97. BIN
      Clocker/Images/PowerIcon.png
  98. BIN
      Clocker/Images/Settings-White.png
  99. BIN
      Clocker/Images/Status.png
  100. BIN
      Clocker/Images/Status@2x.png
  101. Some files were not shown because too many files have changed in this diff Show More

BIN
.DS_Store vendored

Binary file not shown.

BIN
Clocker-Preview.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 806 KiB

646
Clocker.xcodeproj/project.pbxproj

@ -1,646 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
9A25F7471C1A5E17007D369B /* iRate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A25F7441C1A5E17007D369B /* iRate.m */; };
9A392EE81C1CDD530072C10A /* CLAboutUsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A392EE61C1CDD530072C10A /* CLAboutUsViewController.m */; };
9A392EE91C1CDD530072C10A /* CLAboutUsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A392EE71C1CDD530072C10A /* CLAboutUsView.xib */; };
9A392EED1C1CE9950072C10A /* CLPreferencesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A392EEB1C1CE9950072C10A /* CLPreferencesViewController.m */; };
9A392EEE1C1CE9950072C10A /* CLPreferencesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A392EEC1C1CE9950072C10A /* CLPreferencesView.xib */; };
9A4379251BEC223900F4E27F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A4379211BEC223900F4E27F /* Security.framework */; };
9A4379271BEC223900F4E27F /* Fabric.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A4379231BEC223900F4E27F /* Fabric.framework */; };
9A43792A1BEC230A00F4E27F /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A4379291BEC230A00F4E27F /* libc++.tbd */; };
9A43792C1BEC231100F4E27F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A43792B1BEC231100F4E27F /* libz.tbd */; };
9A43792E1BEC256200F4E27F /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A43792D1BEC256200F4E27F /* Media.xcassets */; };
9A56DB801C1CFB73004CE6AF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */; };
9A56DB811C1CFB73004CE6AF /* Panel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A56DB7E1C1CFB73004CE6AF /* Panel.xib */; };
9A5951BA1C1D0A22009C17AA /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5951B91C1D0A22009C17AA /* Crashlytics.framework */; };
9A5951BD1C1D0A8D009C17AA /* CommonStrings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5951BB1C1D0A8D009C17AA /* CommonStrings.m */; };
9A5951C01C1D0AA0009C17AA /* CLOneWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5951BE1C1D0AA0009C17AA /* CLOneWindowController.m */; };
9A5951C21C1D0AAD009C17AA /* CLOneWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A5951C11C1D0AAD009C17AA /* CLOneWindow.xib */; };
9A5951F51C1D3D81009C17AA /* CLTimezoneCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5951F41C1D3D81009C17AA /* CLTimezoneCellView.m */; };
9A5951FA1C1D5214009C17AA /* iVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5951F91C1D5214009C17AA /* iVersion.m */; };
9A5951FD1C1D592D009C17AA /* iVersion.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9A5951FC1C1D592D009C17AA /* iVersion.bundle */; };
9A8605AE1BEC148400A810A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605AD1BEC148400A810A4 /* main.m */; };
9A8605B31BEC14A600A810A4 /* ColoredButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605B21BEC14A600A810A4 /* ColoredButton.m */; };
9A8605B61BEC14BE00A810A4 /* MenubarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605B41BEC14BE00A810A4 /* MenubarController.m */; };
9A8605B71BEC14BE00A810A4 /* ApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605B51BEC14BE00A810A4 /* ApplicationDelegate.m */; };
9A8605BA1BEC14DC00A810A4 /* StatusItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605B81BEC14DC00A810A4 /* StatusItemView.m */; };
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 */; };
9AB9357B1C1AD8F7001285A0 /* CLRatingCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AB9357A1C1AD8F7001285A0 /* CLRatingCellView.m */; };
9AC678E41C1ABAB9003B4F6B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AC678E31C1ABAB9003B4F6B /* QuartzCore.framework */; };
DD4F7C0913C30F9F00825C6E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD4F7C0813C30F9F00825C6E /* Cocoa.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
9A5951CC1C1D1B6F009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
remoteInfo = ApptentiveConnect;
};
9A5951CE1C1D1B6F009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 49626B6D13942A2B0093534C;
remoteInfo = ApptentiveUnitTests;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
9A25F7411C1A5E17007D369B /* iRate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iRate.h; path = "Clocker/Rate App/iRate.h"; sourceTree = "<group>"; };
9A25F7441C1A5E17007D369B /* iRate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iRate.m; path = "Clocker/Rate App/iRate.m"; sourceTree = "<group>"; };
9A392EE51C1CDD530072C10A /* CLAboutUsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLAboutUsViewController.h; path = Clocker/AboutUsWindow/CLAboutUsViewController.h; sourceTree = "<group>"; };
9A392EE61C1CDD530072C10A /* CLAboutUsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLAboutUsViewController.m; path = Clocker/AboutUsWindow/CLAboutUsViewController.m; sourceTree = "<group>"; };
9A392EE71C1CDD530072C10A /* CLAboutUsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CLAboutUsView.xib; path = Clocker/AboutUsWindow/CLAboutUsView.xib; sourceTree = "<group>"; };
9A392EEA1C1CE9950072C10A /* CLPreferencesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLPreferencesViewController.h; path = Clocker/Preferences/CLPreferencesViewController.h; sourceTree = "<group>"; };
9A392EEB1C1CE9950072C10A /* CLPreferencesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLPreferencesViewController.m; path = Clocker/Preferences/CLPreferencesViewController.m; sourceTree = "<group>"; };
9A392EEC1C1CE9950072C10A /* CLPreferencesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CLPreferencesView.xib; path = Clocker/Preferences/CLPreferencesView.xib; sourceTree = "<group>"; };
9A4379211BEC223900F4E27F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Security.framework; sourceTree = "<group>"; };
9A4379231BEC223900F4E27F /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Fabric.framework; sourceTree = "<group>"; };
9A4379291BEC230A00F4E27F /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
9A43792B1BEC231100F4E27F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
9A43792D1BEC256200F4E27F /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainMenu.xib; path = Clocker/MainMenu.xib; sourceTree = "<group>"; };
9A56DB7E1C1CFB73004CE6AF /* Panel.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = Panel.xib; path = Clocker/Panel.xib; sourceTree = "<group>"; };
9A5951B91C1D0A22009C17AA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = Frameworks/Crashlytics.framework; sourceTree = "<group>"; };
9A5951BB1C1D0A8D009C17AA /* CommonStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonStrings.m; path = Clocker/Utilities/CommonStrings.m; sourceTree = "<group>"; };
9A5951BC1C1D0A8D009C17AA /* CommonStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommonStrings.h; path = Clocker/Utilities/CommonStrings.h; sourceTree = "<group>"; };
9A5951BE1C1D0AA0009C17AA /* CLOneWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLOneWindowController.m; path = Clocker/CLOneWindow/CLOneWindowController.m; sourceTree = "<group>"; };
9A5951BF1C1D0AA0009C17AA /* CLOneWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLOneWindowController.h; path = Clocker/CLOneWindow/CLOneWindowController.h; sourceTree = "<group>"; };
9A5951C11C1D0AAD009C17AA /* CLOneWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CLOneWindow.xib; path = Clocker/CLOneWindow/CLOneWindow.xib; sourceTree = "<group>"; };
9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ApptentiveConnect.xcodeproj; path = Clocker/ApptentiveConnect/ApptentiveConnect.xcodeproj; sourceTree = "<group>"; };
9A5951D11C1D1D94009C17AA /* ApptentiveConnect.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApptentiveConnect.framework; path = Clocker/ApptentiveConnect/ApptentiveConnect.framework; sourceTree = "<group>"; };
9A5951F31C1D3D81009C17AA /* CLTimezoneCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLTimezoneCellView.h; path = "Clocker/Custom Table Cell Views/CLTimezoneCellView.h"; sourceTree = "<group>"; };
9A5951F41C1D3D81009C17AA /* CLTimezoneCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLTimezoneCellView.m; path = "Clocker/Custom Table Cell Views/CLTimezoneCellView.m"; sourceTree = "<group>"; };
9A5951F81C1D5214009C17AA /* iVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iVersion.h; path = "Clocker/Updated Version/iVersion.h"; sourceTree = "<group>"; };
9A5951F91C1D5214009C17AA /* iVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iVersion.m; path = "Clocker/Updated Version/iVersion.m"; sourceTree = "<group>"; };
9A5951FC1C1D592D009C17AA /* iVersion.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = iVersion.bundle; path = "Clocker/Updated Version/iVersion.bundle"; sourceTree = "<group>"; };
9A5B1A8D1BECDFB700A77C68 /* Clocker.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = Clocker.entitlements; path = Clocker/Clocker.entitlements; sourceTree = "<group>"; };
9A8605AD1BEC148400A810A4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Clocker/main.m; sourceTree = "<group>"; };
9A8605B21BEC14A600A810A4 /* ColoredButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ColoredButton.m; path = Clocker/ColoredButton.m; sourceTree = "<group>"; };
9A8605B41BEC14BE00A810A4 /* MenubarController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MenubarController.m; path = Clocker/MenubarController.m; sourceTree = "<group>"; };
9A8605B51BEC14BE00A810A4 /* ApplicationDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ApplicationDelegate.m; path = Clocker/ApplicationDelegate.m; sourceTree = "<group>"; };
9A8605B81BEC14DC00A810A4 /* StatusItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = StatusItemView.m; path = Clocker/StatusItemView.m; sourceTree = "<group>"; };
9A8605B91BEC14DC00A810A4 /* PanelController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = PanelController.m; path = Clocker/PanelController.m; sourceTree = "<group>"; };
9A8605BC1BEC14F600A810A4 /* BackgroundView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BackgroundView.m; path = Clocker/BackgroundView.m; sourceTree = "<group>"; };
9A8605BD1BEC14F600A810A4 /* Panel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = Panel.m; path = Clocker/Panel.m; sourceTree = "<group>"; };
9A8605C31BEC155B00A810A4 /* Clocker-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Clocker-Info.plist"; path = "Clocker/Clocker-Info.plist"; sourceTree = "<group>"; };
9A8605C41BEC155B00A810A4 /* BackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BackgroundView.h; path = Clocker/BackgroundView.h; sourceTree = "<group>"; };
9A8605C51BEC155B00A810A4 /* StatusItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatusItemView.h; path = Clocker/StatusItemView.h; sourceTree = "<group>"; };
9A8605C61BEC155B00A810A4 /* Panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Panel.h; path = Clocker/Panel.h; sourceTree = "<group>"; };
9A8605C81BEC155B00A810A4 /* PanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PanelController.h; path = Clocker/PanelController.h; sourceTree = "<group>"; };
9A8605C91BEC155B00A810A4 /* MenubarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MenubarController.h; path = Clocker/MenubarController.h; sourceTree = "<group>"; };
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>"; };
9AB935791C1AD8F7001285A0 /* CLRatingCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLRatingCellView.h; path = Clocker/CLRatingCellView.h; sourceTree = "<group>"; };
9AB9357A1C1AD8F7001285A0 /* CLRatingCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLRatingCellView.m; path = Clocker/CLRatingCellView.m; sourceTree = "<group>"; };
9AC678E31C1ABAB9003B4F6B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
DD4F7C0413C30F9F00825C6E /* Clocker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Clocker.app; sourceTree = BUILT_PRODUCTS_DIR; };
DD4F7C0813C30F9F00825C6E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
DD4F7C0B13C30F9F00825C6E /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
DD4F7C0113C30F9F00825C6E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9AC678E41C1ABAB9003B4F6B /* QuartzCore.framework in Frameworks */,
9A43792C1BEC231100F4E27F /* libz.tbd in Frameworks */,
9A5951BA1C1D0A22009C17AA /* Crashlytics.framework in Frameworks */,
9A43792A1BEC230A00F4E27F /* libc++.tbd in Frameworks */,
9A4379251BEC223900F4E27F /* Security.framework in Frameworks */,
DD4F7C0913C30F9F00825C6E /* Cocoa.framework in Frameworks */,
9A4379271BEC223900F4E27F /* Fabric.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
9A2000C61BFBCEF6002BFDE8 /* Utilties */ = {
isa = PBXGroup;
children = (
9A5951BB1C1D0A8D009C17AA /* CommonStrings.m */,
9A5951BC1C1D0A8D009C17AA /* CommonStrings.h */,
);
name = Utilties;
sourceTree = "<group>";
};
9A25F7481C1A5E21007D369B /* Rate */ = {
isa = PBXGroup;
children = (
9A25F7411C1A5E17007D369B /* iRate.h */,
9A25F7441C1A5E17007D369B /* iRate.m */,
);
name = Rate;
sourceTree = "<group>";
};
9A5951C31C1D0DE3009C17AA /* View Controllers */ = {
isa = PBXGroup;
children = (
9A392EE51C1CDD530072C10A /* CLAboutUsViewController.h */,
9A392EE61C1CDD530072C10A /* CLAboutUsViewController.m */,
9A392EEA1C1CE9950072C10A /* CLPreferencesViewController.h */,
9A392EEB1C1CE9950072C10A /* CLPreferencesViewController.m */,
);
name = "View Controllers";
sourceTree = "<group>";
};
9A5951C81C1D1B6F009C17AA /* Products */ = {
isa = PBXGroup;
children = (
9A5951CD1C1D1B6F009C17AA /* ApptentiveConnect.framework */,
9A5951CF1C1D1B6F009C17AA /* ApptentiveUnitTests.octest */,
);
name = Products;
sourceTree = "<group>";
};
9A5951F01C1D3D35009C17AA /* Table Cell Views */ = {
isa = PBXGroup;
children = (
9A5951F31C1D3D81009C17AA /* CLTimezoneCellView.h */,
9A5951F41C1D3D81009C17AA /* CLTimezoneCellView.m */,
);
name = "Table Cell Views";
sourceTree = "<group>";
};
9A5951FB1C1D5222009C17AA /* Check for Updated Version */ = {
isa = PBXGroup;
children = (
9A5951FC1C1D592D009C17AA /* iVersion.bundle */,
9A5951F81C1D5214009C17AA /* iVersion.h */,
9A5951F91C1D5214009C17AA /* iVersion.m */,
);
name = "Check for Updated Version";
sourceTree = "<group>";
};
9A8605E01BEC15F400A810A4 /* XIB */ = {
isa = PBXGroup;
children = (
9A5951C11C1D0AAD009C17AA /* CLOneWindow.xib */,
9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */,
9A56DB7E1C1CFB73004CE6AF /* Panel.xib */,
9A392EE71C1CDD530072C10A /* CLAboutUsView.xib */,
9A392EEC1C1CE9950072C10A /* CLPreferencesView.xib */,
);
name = XIB;
sourceTree = "<group>";
};
9A8605E21BEC161300A810A4 /* Superclass */ = {
isa = PBXGroup;
children = (
9A8605C61BEC155B00A810A4 /* Panel.h */,
9A8605BD1BEC14F600A810A4 /* Panel.m */,
9A8605CB1BEC155B00A810A4 /* ColoredButton.h */,
9A8605B21BEC14A600A810A4 /* ColoredButton.m */,
);
name = Superclass;
sourceTree = "<group>";
};
9A8605E31BEC163100A810A4 /* Views */ = {
isa = PBXGroup;
children = (
9A8605C41BEC155B00A810A4 /* BackgroundView.h */,
9A8605C51BEC155B00A810A4 /* StatusItemView.h */,
9A8605BC1BEC14F600A810A4 /* BackgroundView.m */,
9A8605B81BEC14DC00A810A4 /* StatusItemView.m */,
9AB935791C1AD8F7001285A0 /* CLRatingCellView.h */,
9AB9357A1C1AD8F7001285A0 /* CLRatingCellView.m */,
);
name = Views;
sourceTree = "<group>";
};
9A8605E41BEC164C00A810A4 /* Main */ = {
isa = PBXGroup;
children = (
9A8605C31BEC155B00A810A4 /* Clocker-Info.plist */,
9A8605CC1BEC155B00A810A4 /* Clocker-Prefix.pch */,
9A8605AD1BEC148400A810A4 /* main.m */,
);
name = Main;
sourceTree = "<group>";
};
9A8605E51BEC165400A810A4 /* Controllers */ = {
isa = PBXGroup;
children = (
9A5951BE1C1D0AA0009C17AA /* CLOneWindowController.m */,
9A5951BF1C1D0AA0009C17AA /* CLOneWindowController.h */,
9A8605CA1BEC155B00A810A4 /* ApplicationDelegate.h */,
9A8605B51BEC14BE00A810A4 /* ApplicationDelegate.m */,
9A8605C91BEC155B00A810A4 /* MenubarController.h */,
9A8605B41BEC14BE00A810A4 /* MenubarController.m */,
9A8605C81BEC155B00A810A4 /* PanelController.h */,
9A8605B91BEC14DC00A810A4 /* PanelController.m */,
);
name = Controllers;
sourceTree = "<group>";
};
DD4F7BF913C30F9F00825C6E = {
isa = PBXGroup;
children = (
9A5B1A8D1BECDFB700A77C68 /* Clocker.entitlements */,
9A43792D1BEC256200F4E27F /* Media.xcassets */,
9A2000C61BFBCEF6002BFDE8 /* Utilties */,
9A8605E01BEC15F400A810A4 /* XIB */,
9A5951F01C1D3D35009C17AA /* Table Cell Views */,
9A8605E31BEC163100A810A4 /* Views */,
9A8605E41BEC164C00A810A4 /* Main */,
9A5951C31C1D0DE3009C17AA /* View Controllers */,
9A8605E51BEC165400A810A4 /* Controllers */,
9A8605E21BEC161300A810A4 /* Superclass */,
DD4F7C0713C30F9F00825C6E /* Frameworks */,
9A5951FB1C1D5222009C17AA /* Check for Updated Version */,
DD4F7C0513C30F9F00825C6E /* Products */,
9A25F7481C1A5E21007D369B /* Rate */,
);
sourceTree = "<group>";
};
DD4F7C0513C30F9F00825C6E /* Products */ = {
isa = PBXGroup;
children = (
DD4F7C0413C30F9F00825C6E /* Clocker.app */,
);
name = Products;
sourceTree = "<group>";
};
DD4F7C0713C30F9F00825C6E /* Frameworks */ = {
isa = PBXGroup;
children = (
9A5951D11C1D1D94009C17AA /* ApptentiveConnect.framework */,
9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */,
9A5951B91C1D0A22009C17AA /* Crashlytics.framework */,
9AC678E31C1ABAB9003B4F6B /* QuartzCore.framework */,
9A4379211BEC223900F4E27F /* Security.framework */,
9A4379231BEC223900F4E27F /* Fabric.framework */,
9A43792B1BEC231100F4E27F /* libz.tbd */,
9A4379291BEC230A00F4E27F /* libc++.tbd */,
DD4F7C0B13C30F9F00825C6E /* AppKit.framework */,
DD4F7C0813C30F9F00825C6E /* Cocoa.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
DD4F7C0313C30F9F00825C6E /* Clocker */ = {
isa = PBXNativeTarget;
buildConfigurationList = DD4F7C2213C30F9F00825C6E /* Build configuration list for PBXNativeTarget "Clocker" */;
buildPhases = (
DD4F7C0013C30F9F00825C6E /* Sources */,
DD4F7C0113C30F9F00825C6E /* Frameworks */,
DD4F7C0213C30F9F00825C6E /* Resources */,
9A4379201BEC220200F4E27F /* ShellScript */,
);
buildRules = (
);
dependencies = (
);
name = Clocker;
productName = Popup;
productReference = DD4F7C0413C30F9F00825C6E /* Clocker.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
DD4F7BFB13C30F9F00825C6E /* Project object */ = {
isa = PBXProject;
attributes = {
CLASSPREFIX = CL;
LastUpgradeCheck = 0700;
TargetAttributes = {
DD4F7C0313C30F9F00825C6E = {
DevelopmentTeam = AJS5SNW8EY;
SystemCapabilities = {
com.apple.Sandbox = {
enabled = 1;
};
};
};
};
};
buildConfigurationList = DD4F7BFE13C30F9F00825C6E /* Build configuration list for PBXProject "Clocker" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = DD4F7BF913C30F9F00825C6E;
productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 9A5951C81C1D1B6F009C17AA /* Products */;
ProjectRef = 9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */;
},
);
projectRoot = "";
targets = (
DD4F7C0313C30F9F00825C6E /* Clocker */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
9A5951CD1C1D1B6F009C17AA /* ApptentiveConnect.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = ApptentiveConnect.framework;
remoteRef = 9A5951CC1C1D1B6F009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
9A5951CF1C1D1B6F009C17AA /* ApptentiveUnitTests.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveUnitTests.octest;
remoteRef = 9A5951CE1C1D1B6F009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
DD4F7C0213C30F9F00825C6E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9A5951FD1C1D592D009C17AA /* iVersion.bundle in Resources */,
9A392EEE1C1CE9950072C10A /* CLPreferencesView.xib in Resources */,
9A56DB811C1CFB73004CE6AF /* Panel.xib in Resources */,
9A43792E1BEC256200F4E27F /* Media.xcassets in Resources */,
9A392EE91C1CDD530072C10A /* CLAboutUsView.xib in Resources */,
9A5951C21C1D0AAD009C17AA /* CLOneWindow.xib in Resources */,
9A56DB801C1CFB73004CE6AF /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
9A4379201BEC220200F4E27F /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
DD4F7C0013C30F9F00825C6E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9A8605BF1BEC14F600A810A4 /* BackgroundView.m in Sources */,
9AB9357B1C1AD8F7001285A0 /* CLRatingCellView.m in Sources */,
9A392EED1C1CE9950072C10A /* CLPreferencesViewController.m in Sources */,
9A5951BD1C1D0A8D009C17AA /* CommonStrings.m in Sources */,
9A5951FA1C1D5214009C17AA /* iVersion.m in Sources */,
9A25F7471C1A5E17007D369B /* iRate.m in Sources */,
9A8605C01BEC14F600A810A4 /* Panel.m in Sources */,
9A8605BA1BEC14DC00A810A4 /* StatusItemView.m in Sources */,
9A8605BB1BEC14DC00A810A4 /* PanelController.m in Sources */,
9A8605B61BEC14BE00A810A4 /* MenubarController.m in Sources */,
9A5951C01C1D0AA0009C17AA /* CLOneWindowController.m in Sources */,
9A8605B71BEC14BE00A810A4 /* ApplicationDelegate.m in Sources */,
9A5951F51C1D3D81009C17AA /* CLTimezoneCellView.m in Sources */,
9A8605B31BEC14A600A810A4 /* ColoredButton.m in Sources */,
9A8605AE1BEC148400A810A4 /* main.m in Sources */,
9A392EE81C1CDD530072C10A /* CLAboutUsViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
9A5B1A8B1BECDB5B00A77C68 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.10;
PROVISIONING_PROFILE = "";
SDKROOT = macosx;
};
name = Distribution;
};
9A5B1A8C1BECDB5B00A77C68 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = Clocker/Clocker.entitlements;
CODE_SIGN_IDENTITY = "";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Frameworks",
"$(PROJECT_DIR)/Clocker/ApptentiveConnect",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "Clocker/Clocker-Prefix.pch";
INFOPLIST_FILE = "Clocker/Clocker-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker;
PRODUCT_NAME = Clocker;
PROVISIONING_PROFILE = "";
WRAPPER_EXTENSION = app;
};
name = Distribution;
};
DD4F7C2013C30F9F00825C6E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.10;
ONLY_ACTIVE_ARCH = YES;
PROVISIONING_PROFILE = "";
SDKROOT = macosx;
};
name = Debug;
};
DD4F7C2113C30F9F00825C6E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.10;
PROVISIONING_PROFILE = "";
SDKROOT = macosx;
};
name = Release;
};
DD4F7C2313C30F9F00825C6E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = Clocker/Clocker.entitlements;
CODE_SIGN_IDENTITY = "";
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Frameworks",
"$(PROJECT_DIR)/Clocker/ApptentiveConnect",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "Clocker/Clocker-Prefix.pch";
INFOPLIST_FILE = "Clocker/Clocker-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.10;
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker;
PRODUCT_NAME = Clocker;
PROVISIONING_PROFILE = "";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
DD4F7C2413C30F9F00825C6E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = Clocker/Clocker.entitlements;
CODE_SIGN_IDENTITY = "";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Frameworks",
"$(PROJECT_DIR)/Clocker/ApptentiveConnect",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "Clocker/Clocker-Prefix.pch";
INFOPLIST_FILE = "Clocker/Clocker-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.10;
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker;
PRODUCT_NAME = Clocker;
PROVISIONING_PROFILE = "";
WRAPPER_EXTENSION = app;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
DD4F7BFE13C30F9F00825C6E /* Build configuration list for PBXProject "Clocker" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DD4F7C2013C30F9F00825C6E /* Debug */,
DD4F7C2113C30F9F00825C6E /* Release */,
9A5B1A8B1BECDB5B00A77C68 /* Distribution */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DD4F7C2213C30F9F00825C6E /* Build configuration list for PBXNativeTarget "Clocker" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DD4F7C2313C30F9F00825C6E /* Debug */,
DD4F7C2413C30F9F00825C6E /* Release */,
9A5B1A8C1BECDB5B00A77C68 /* Distribution */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = DD4F7BFB13C30F9F00825C6E /* Project object */;
}

7
Clocker.xcodeproj/project.xcworkspace/contents.xcworkspacedata generated

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:/Users/abhishekbanthia/Downloads/Popup-master/Clocker.xcodeproj">
</FileRef>
</Workspace>

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

Binary file not shown.

17
Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
scope = "1"
stopOnStyle = "0">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

98
Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/Clocker.xcscheme

@ -1,98 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0700"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DD4F7C0313C30F9F00825C6E"
BuildableName = "Clocker.app"
BlueprintName = "Clocker"
ReferencedContainer = "container:Clocker.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DD4F7C0313C30F9F00825C6E"
BuildableName = "Clocker.app"
BlueprintName = "Clocker"
ReferencedContainer = "container:Clocker.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
showNonLocalizedStrings = "YES"
language = "en">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DD4F7C0313C30F9F00825C6E"
BuildableName = "Clocker.app"
BlueprintName = "Clocker"
ReferencedContainer = "container:Clocker.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
<AdditionalOption
key = "NSZombieEnabled"
value = "YES"
isEnabled = "YES">
</AdditionalOption>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DD4F7C0313C30F9F00825C6E"
BuildableName = "Clocker.app"
BlueprintName = "Clocker"
ReferencedContainer = "container:Clocker.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

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

@ -1,22 +0,0 @@
<?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>SchemeUserState</key>
<dict>
<key>Clocker.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>DD4F7C0313C30F9F00825C6E</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

156
Clocker/AboutUsWindow/CLAboutUsView.xib

@ -1,156 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CLAboutUsViewController">
<connections>
<outlet property="view" destination="FS5-f2-b1Z" id="qSe-zw-rRT"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<view id="FS5-f2-b1Z">
<rect key="frame" x="0.0" y="0.0" width="504" height="207"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p2G-hA-MSX">
<rect key="frame" x="20" y="56" width="125" height="117"/>
<constraints>
<constraint firstAttribute="width" constant="125" id="6Kp-RK-dT4"/>
<constraint firstAttribute="height" constant="117" id="znw-VN-bXv"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-256" id="pfa-88-uAu"/>
</imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XlC-Xd-67t">
<rect key="frame" x="161" y="152" width="97" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="93" id="NgB-aR-GfY"/>
<constraint firstAttribute="height" constant="35" id="dqF-vG-wml"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Clocker" id="KPE-f2-s6r">
<font key="font" size="29" name="HelveticaNeue-Thin"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FG9-E5-o8y">
<rect key="frame" x="164" y="133" width="79" 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="HelveticaNeue-Thin"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5Eo-aJ-L8H">
<rect key="frame" x="164" y="111" width="199" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="6fy-MI-uin"/>
<constraint firstAttribute="width" constant="195" id="kzy-kb-gYL"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Copyright (2015) Abhishek Banthia" id="4PX-se-5ds">
<font key="font" size="14" name="HelveticaNeue-UltraLight"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Cx-BF-XMU">
<rect key="frame" x="164" y="83" width="334" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="Oob-bz-4Vp"/>
<constraint firstAttribute="width" constant="330" id="RyU-Mg-Xun"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Clocker is completely open-source and is available for reuse under" id="oId-kW-4fE">
<font key="font" size="10" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fgO-N3-3oh">
<rect key="frame" x="153" y="13" width="116" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="HOR-7s-O7V"/>
<constraint firstAttribute="width" constant="104" id="fjr-FG-Jlq"/>
</constraints>
<buttonCell key="cell" type="push" title="View Source" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="yEt-bN-Jci">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="viewSource:" target="-2" id="gkr-T0-0OI"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="q67-QZ-7g3">
<rect key="frame" x="260" y="13" width="117" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="Fw5-r2-JCs"/>
<constraint firstAttribute="width" constant="105" id="zmg-WE-hsM"/>
</constraints>
<buttonCell key="cell" type="push" title="Report Issue" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HO1-pf-GNd">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="reportIssue:" target="-2" id="71W-Nb-pYu"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P3u-Um-Nby">
<rect key="frame" x="367" y="13" width="123" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="111" id="5Yt-bH-NGf"/>
<constraint firstAttribute="height" constant="21" id="8Jh-fm-8up"/>
</constraints>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="FindUsOnFacebook" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KI2-hO-Wif">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="openFacebookPage:" target="-2" id="gnQ-cM-gbO"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Rzs-xE-sfs">
<rect key="frame" x="165" y="68" width="334" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="2sg-Q1-h9h"/>
<constraint firstAttribute="width" constant="330" id="MHq-fu-8k6"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="the MIT License." id="JAy-Yp-MXm">
<font key="font" size="10" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="fgO-N3-3oh" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="14" id="4rX-vc-Me4"/>
<constraint firstItem="p2G-hA-MSX" firstAttribute="leading" secondItem="FS5-f2-b1Z" secondAttribute="leading" constant="20" id="8LW-4H-HKD"/>
<constraint firstAttribute="bottom" secondItem="q67-QZ-7g3" secondAttribute="bottom" constant="20" id="Cl5-lU-Hlw"/>
<constraint firstAttribute="bottom" secondItem="fgO-N3-3oh" secondAttribute="bottom" constant="20" id="Ka3-lR-aW1"/>
<constraint firstItem="p2G-hA-MSX" firstAttribute="top" secondItem="FS5-f2-b1Z" secondAttribute="top" constant="34" id="LFJ-eg-NOC"/>
<constraint firstItem="Rzs-xE-sfs" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="22" id="Mru-Qk-R35"/>
<constraint firstItem="P3u-Um-Nby" firstAttribute="leading" secondItem="q67-QZ-7g3" secondAttribute="trailing" constant="2" id="NtI-jY-BNB"/>
<constraint firstItem="6Cx-BF-XMU" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="21" id="PxC-Pa-PfL"/>
<constraint firstItem="XlC-Xd-67t" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="18" id="ReB-0P-Ppj"/>
<constraint firstItem="5Eo-aJ-L8H" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="21" 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="3" id="fA5-O5-kY8"/>
<constraint firstItem="FG9-E5-o8y" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="21" 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="20" id="slR-Qu-uJh"/>
<constraint firstItem="FG9-E5-o8y" firstAttribute="top" secondItem="XlC-Xd-67t" secondAttribute="bottom" constant="-4" id="yHu-dm-LPw"/>
<constraint firstItem="Rzs-xE-sfs" firstAttribute="top" secondItem="6Cx-BF-XMU" secondAttribute="bottom" constant="-5" id="ydK-a7-uQy"/>
<constraint firstItem="6Cx-BF-XMU" firstAttribute="top" secondItem="5Eo-aJ-L8H" secondAttribute="bottom" constant="8" id="zki-ag-D4H"/>
</constraints>
<point key="canvasLocation" x="578" y="300.5"/>
</view>
</objects>
<resources>
<image name="ClockerIcon-256" width="256" height="256"/>
<image name="FindUsOnFacebook" width="144" height="27"/>
</resources>
</document>

13
Clocker/AboutUsWindow/CLAboutUsViewController.h

@ -1,13 +0,0 @@
//
// CLAboutUsViewController.h
// Clocker
//
// Created by Abhishek Banthia on 12/12/15.
//
//
#import <Cocoa/Cocoa.h>
@interface CLAboutUsViewController : NSViewController
@end

50
Clocker/AboutUsWindow/CLAboutUsViewController.m

@ -1,50 +0,0 @@
//
// CLAboutUsViewController.m
// Clocker
//
// Created by Abhishek Banthia on 12/12/15.
//
//
#import "CLAboutUsViewController.h"
@interface CLAboutUsViewController ()
@end
static CLAboutUsViewController *sharedAboutUs = nil;
NSString *const CLAboutUsNibIdentifier = @"CLAboutWindow";
NSString *const CLGitHubURL = @"https://github.com/Abhishaker17/Clocker";
NSString *const CLIssueURL =@"https://github.com/Abhishaker17/Clocker/issues";
NSString *const CLFacebookPageURL = @"https://www.facebook.com/ClockerMenubarClock/";
@implementation CLAboutUsViewController
- (void)viewDidLoad {
[super viewDidLoad];
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
[self.view setLayer:viewLayer];
// Do view setup here.
}
- (IBAction)viewSource:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLGitHubURL]];
}
- (IBAction)reportIssue:(id)sender
{
//
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLIssueURL]];
}
- (IBAction)openFacebookPage:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLFacebookPageURL]];
}
@end

39
Clocker/ApplicationDelegate.h

@ -1,39 +0,0 @@
// Created by Abhishek Banthia on 11/4/15.
// Copyright (c) 2015 Abhishek Banthia All rights reserved.
//
// Copyright (c) 2015, Abhishek Banthia
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import "MenubarController.h"
#import "PanelController.h"
@interface ApplicationDelegate : NSObject <NSApplicationDelegate, PanelControllerDelegate>
@property (nonatomic, strong) MenubarController *menubarController;
@property (nonatomic, strong, readonly) PanelController *panelController;
- (IBAction)togglePanel:(id)sender;
@end

167
Clocker/ApplicationDelegate.m

@ -1,167 +0,0 @@
// Created by Abhishek Banthia on 11/4/15.
// Copyright (c) 2015 Abhishek Banthia All rights reserved.
//
// Copyright (c) 2015, Abhishek Banthia
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import "ApplicationDelegate.h"
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>
#import "iRate.h"
#import "CommonStrings.h"
#import "iVersion.h"
@implementation ApplicationDelegate
@synthesize panelController = _panelController;
@synthesize menubarController = _menubarController;
#pragma mark -
- (void)dealloc
{
[self.panelController removeObserver:self forKeyPath:@"hasActivePanel"];
}
#pragma mark -
void *kContextActivePanel = &kContextActivePanel;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == kContextActivePanel) {
self.menubarController.hasActiveIcon = self.panelController.hasActivePanel;
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
+ (void)initialize
{
//Configure iRate
[iRate sharedInstance].appStoreID = 1056643111;
[iVersion sharedInstance].appStoreID = 1056643111;
[iRate sharedInstance].useAllAvailableLanguages = NO;
[iVersion sharedInstance].useAllAvailableLanguages = NO;
}
#pragma mark - NSApplicationDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
NSNumber *opened = [[NSUserDefaults standardUserDefaults] objectForKey:@"noOfTimes"];
if (opened == nil)
{
[[NSUserDefaults standardUserDefaults] setObject:[NSMutableArray array]
forKey:CLDefaultPreferenceKey];
NSInteger noOfTimes = opened.integerValue + 1;
NSNumber *noOfTime = [NSNumber numberWithInteger:noOfTimes];
[[NSUserDefaults standardUserDefaults] setObject:noOfTime forKey:@"noOfTimes"];;
}
NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
NSMutableArray *newDefaults = [[NSMutableArray alloc] init];
if (defaultPreference.count == 0)
{
NSDictionary *defaultDictionary = @{CLTimezoneName : [NSTimeZone systemTimeZone].name, CLCustomLabel : CLEmptyString};
newDefaults = [[NSMutableArray alloc] initWithObjects:defaultDictionary, nil];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:CLDefaultPreferenceKey];
}
[defaultPreference enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[NSString class]]) {
NSDictionary *defaultDictionary = @{CLTimezoneName : obj, CLCustomLabel : CLEmptyString};
[newDefaults addObject:defaultDictionary];
}
}];
if (newDefaults.count > 0)
{
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:CLDefaultPreferenceKey];
}
NSString *defaultFont = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultFontFamily"];
if (defaultFont == nil) {
[[NSUserDefaults standardUserDefaults] setObject:@"Default" forKey:@"defaultFontFamily"];
}
NSString *defaultTheme = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultTheme"];
if (defaultTheme == nil) {
[[NSUserDefaults standardUserDefaults] setObject:@"Default" forKey:@"defaultTheme"];
}
// Install icon into the menu bar
self.menubarController = [[MenubarController alloc] init];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"NSApplicationCrashOnExceptions": @YES }];
[[Crashlytics sharedInstance] setDebugMode:NO];
[Fabric with:@[[Crashlytics class]]];
}
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
// Explicitly remove the icon from the menu bar
self.menubarController = nil;
return NSTerminateNow;
}
#pragma mark - Actions
- (IBAction)togglePanel:(id)sender
{
self.menubarController.hasActiveIcon = !self.menubarController.hasActiveIcon;
self.panelController.hasActivePanel = self.menubarController.hasActiveIcon;
}
#pragma mark - Public accessors
- (PanelController *)panelController
{
if (_panelController == nil) {
_panelController = [[PanelController alloc] initWithDelegate:self];
[_panelController addObserver:self forKeyPath:@"hasActivePanel" options:0 context:kContextActivePanel];
}
return _panelController;
}
#pragma mark - PanelControllerDelegate
- (StatusItemView *)statusItemViewForPanelController:(PanelController *)controller
{
return self.menubarController.statusItemView;
}
@end

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect

@ -1 +0,0 @@
Versions/Current/ApptentiveConnect

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Headers

@ -1 +0,0 @@
Versions/Current/Headers

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Resources

@ -1 +0,0 @@
Versions/Current/Resources

BIN
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/ApptentiveConnect

Binary file not shown.

120
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATAppRatingFlow.h

@ -1,120 +0,0 @@
//
// ATAppRatingFlow.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 7/8/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
#elif TARGET_OS_MAC
#import <Cocoa/Cocoa.h>
#endif
/*! Notification sent when the user has agreed to rate the application. */
extern NSString *const ATAppRatingFlowUserAgreedToRateAppNotification;
/*! A workflow for a user either giving feedback on or rating the current
application. */
@interface ATAppRatingFlow : NSObject
#if TARGET_OS_IPHONE
<SKStoreProductViewControllerDelegate, UIAlertViewDelegate>
#endif
{
@private
NSString *iTunesAppID;
#if TARGET_OS_IPHONE
UIAlertView *enjoymentDialog;
UIAlertView *ratingDialog;
#endif
NSUInteger daysBeforePrompt;
NSUInteger usesBeforePrompt;
NSUInteger significantEventsBeforePrompt;
NSUInteger daysBeforeRePrompting;
NSDate *lastUseOfApp;
NSString *appName;
}
/*! Set to a custom app name if you'd like to use something other than the bundle display name. */
@property (nonatomic, copy) NSString *appName;
/*! The default singleton constructor. Call with an iTunes Applicaiton ID as
an NSString */
+ (ATAppRatingFlow *)sharedRatingFlowWithAppID:(NSString *)iTunesAppID;
#if TARGET_OS_IPHONE
/*!
Call when the application is done launching. If we should be able to
prompt for a rating, pass YES for canPromptRating. The viewController is
the viewController from which a feedback dialog will be shown.
*/
- (void)appDidLaunch:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
/*!
Call when the application enters the foreground. If we should be able to
prompt for a rating, pass YES.
The viewController is the UIViewController from which a feedback dialog
will be shown.
*/
- (void)appDidEnterForeground:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
/*!
Call whenever a significant event occurs in the application. So, for example,
if you want to have a rating show up after the user has played 20 levels of
a game, you would set significantEventsBeforePrompt to 20, and call this
after each level.
If we should be able to prompt for a rating when this is called, pass YES.
The viewController is the UIViewController from which a feedback dialog
will be shown.
*/
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
#elif TARGET_OS_MAC
/*!
Call when the application is done launching. If we should be able to
prompt for a rating, pass YES.
*/
- (void)appDidLaunch:(BOOL)canPromptForRating;
/*!
Call whenever a significant event occurs in the application. So, for example,
if you want to have a rating show up after the user has played 20 levels of
a game, you would set significantEventsBeforePrompt to 20, and call this
after each level.
If we should be able to prompt for a rating when this is called, pass YES.
*/
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating;
#endif
#if TARGET_OS_IPHONE
/*!
Call if you want to show the enjoyment dialog directly. This enters the flow
for either bringing up the feedback view or the rating dialog.
*/
- (void)showEnjoymentDialog:(UIViewController *)vc;
/*!
Call if you want to show the rating dialog directly.
*/
- (IBAction)showRatingDialog:(UIViewController *)vc;
#elif TARGET_OS_MAC
/*!
Call if you want to show the enjoyment dialog directly. This enters the flow
for either bringing up the feedback view or the rating dialog.
*/
- (IBAction)showEnjoymentDialog:(id)sender;
/*!
Call if you want to show the rating dialog directly.
*/
- (IBAction)showRatingDialog:(id)sender;
#endif
@end

95
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATConnect.h

@ -1,95 +0,0 @@
//
// ATConnect.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 3/12/11.
// Copyright 2011 Apptentive, Inc.. All rights reserved.
//
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#elif TARGET_OS_MAC
#import <Cocoa/Cocoa.h>
#endif
#define kATConnectVersionString @"0.4.12"
#if TARGET_OS_IPHONE
#define kATConnectPlatformString @"iOS"
@class ATFeedbackController;
#elif TARGET_OS_MAC
#define kATConnectPlatformString @"Mac OS X"
@class ATFeedbackWindowController;
#endif
typedef enum {
ATFeedbackControllerDefault,
ATFeedbackControllerSimple
} ATFeedbackControllerType;
@interface ATConnect : NSObject {
@private
#if TARGET_OS_IPHONE
ATFeedbackController *feedbackController;
ATFeedbackController *currentFeedbackController;
#elif TARGET_OS_MAC
ATFeedbackWindowController *feedbackWindowController;
#endif
NSMutableDictionary *additionalFeedbackData;
NSString *apiKey;
BOOL showTagline;
BOOL shouldTakeScreenshot;
BOOL showEmailField;
NSString *initialName;
NSString *initialEmailAddress;
ATFeedbackControllerType feedbackControllerType;
NSString *customPlaceholderText;
}
@property (nonatomic, copy) NSString *apiKey;
@property (nonatomic, assign) BOOL showTagline;
@property (nonatomic, assign) BOOL shouldTakeScreenshot;
@property (nonatomic, assign) BOOL showEmailField;
@property (nonatomic, copy) NSString *initialName;
@property (nonatomic, copy) NSString *initialEmailAddress;
@property (nonatomic, assign) ATFeedbackControllerType feedbackControllerType;
/*! Set this if you want some custom text to appear as a placeholder in the
feedback text box. */
@property (nonatomic, copy) NSString *customPlaceholderText;
+ (ATConnect *)sharedConnection;
#if TARGET_OS_IPHONE
/*!
* Presents a feedback controller in the window of the given view controller.
*/
- (void)presentFeedbackControllerFromViewController:(UIViewController *)viewController;
/*!
* Dismisses the feedback controller. You normally won't need to call this.
*/
- (void)dismissFeedbackControllerAnimated:(BOOL)animated completion:(void (^)(void))completion;
#elif TARGET_OS_MAC
/*!
* Presents a feedback window.
*/
- (IBAction)showFeedbackWindow:(id)sender;
#endif
/*! Adds an additional data field to any feedback sent. */
- (void)addAdditionalInfoToFeedback:(NSObject<NSCoding> *)object withKey:(NSString *)key;
/*! Removes an additional data field from the feedback sent. */
- (void)removeAdditionalInfoFromFeedbackWithKey:(NSString *)key;
/*!
* Returns the NSBundle corresponding to the bundle containing ATConnect's
* images, xibs, strings files, etc.
*/
+ (NSBundle *)resourceBundle;
@end
/*! Replacement for NSLocalizedString within ApptentiveConnect. Pulls
localized strings out of the resource bundle. */
extern NSString *ATLocalizedString(NSString *key, NSString *comment);

BIN
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/ATFeedbackWindow.nib generated

Binary file not shown.

BIN
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/English.lproj/InfoPlist.strings

Binary file not shown.

44
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/Info.plist

@ -1,44 +0,0 @@
<?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>BuildMachineOSBuild</key>
<string>15C50</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>ApptentiveConnect</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.ApptentiveConnect</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>ApptentiveConnect</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>7C68</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>15C43</string>
<key>DTSDKName</key>
<string>macosx10.11</string>
<key>DTXcode</key>
<string>0720</string>
<key>DTXcodeBuild</key>
<string>7C68</string>
</dict>
</plist>

BIN
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

BIN
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info@2x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/Current

@ -1 +0,0 @@
A

1
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect

@ -1 +0,0 @@
Versions/Current/ApptentiveConnect

1
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Headers

@ -1 +0,0 @@
Versions/Current/Headers

1
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Resources

@ -1 +0,0 @@
Versions/Current/Resources

BIN
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/ApptentiveConnect

Binary file not shown.

120
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATAppRatingFlow.h

@ -1,120 +0,0 @@
//
// ATAppRatingFlow.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 7/8/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
#elif TARGET_OS_MAC
#import <Cocoa/Cocoa.h>
#endif
/*! Notification sent when the user has agreed to rate the application. */
extern NSString *const ATAppRatingFlowUserAgreedToRateAppNotification;
/*! A workflow for a user either giving feedback on or rating the current
application. */
@interface ATAppRatingFlow : NSObject
#if TARGET_OS_IPHONE
<SKStoreProductViewControllerDelegate, UIAlertViewDelegate>
#endif
{
@private
NSString *iTunesAppID;
#if TARGET_OS_IPHONE
UIAlertView *enjoymentDialog;
UIAlertView *ratingDialog;
#endif
NSUInteger daysBeforePrompt;
NSUInteger usesBeforePrompt;
NSUInteger significantEventsBeforePrompt;
NSUInteger daysBeforeRePrompting;
NSDate *lastUseOfApp;
NSString *appName;
}
/*! Set to a custom app name if you'd like to use something other than the bundle display name. */
@property (nonatomic, copy) NSString *appName;
/*! The default singleton constructor. Call with an iTunes Applicaiton ID as
an NSString */
+ (ATAppRatingFlow *)sharedRatingFlowWithAppID:(NSString *)iTunesAppID;
#if TARGET_OS_IPHONE
/*!
Call when the application is done launching. If we should be able to
prompt for a rating, pass YES for canPromptRating. The viewController is
the viewController from which a feedback dialog will be shown.
*/
- (void)appDidLaunch:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
/*!
Call when the application enters the foreground. If we should be able to
prompt for a rating, pass YES.
The viewController is the UIViewController from which a feedback dialog
will be shown.
*/
- (void)appDidEnterForeground:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
/*!
Call whenever a significant event occurs in the application. So, for example,
if you want to have a rating show up after the user has played 20 levels of
a game, you would set significantEventsBeforePrompt to 20, and call this
after each level.
If we should be able to prompt for a rating when this is called, pass YES.
The viewController is the UIViewController from which a feedback dialog
will be shown.
*/
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
#elif TARGET_OS_MAC
/*!
Call when the application is done launching. If we should be able to
prompt for a rating, pass YES.
*/
- (void)appDidLaunch:(BOOL)canPromptForRating;
/*!
Call whenever a significant event occurs in the application. So, for example,
if you want to have a rating show up after the user has played 20 levels of
a game, you would set significantEventsBeforePrompt to 20, and call this
after each level.
If we should be able to prompt for a rating when this is called, pass YES.
*/
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating;
#endif
#if TARGET_OS_IPHONE
/*!
Call if you want to show the enjoyment dialog directly. This enters the flow
for either bringing up the feedback view or the rating dialog.
*/
- (void)showEnjoymentDialog:(UIViewController *)vc;
/*!
Call if you want to show the rating dialog directly.
*/
- (IBAction)showRatingDialog:(UIViewController *)vc;
#elif TARGET_OS_MAC
/*!
Call if you want to show the enjoyment dialog directly. This enters the flow
for either bringing up the feedback view or the rating dialog.
*/
- (IBAction)showEnjoymentDialog:(id)sender;
/*!
Call if you want to show the rating dialog directly.
*/
- (IBAction)showRatingDialog:(id)sender;
#endif
@end

95
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATConnect.h

@ -1,95 +0,0 @@
//
// ATConnect.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 3/12/11.
// Copyright 2011 Apptentive, Inc.. All rights reserved.
//
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#elif TARGET_OS_MAC
#import <Cocoa/Cocoa.h>
#endif
#define kATConnectVersionString @"0.4.12"
#if TARGET_OS_IPHONE
#define kATConnectPlatformString @"iOS"
@class ATFeedbackController;
#elif TARGET_OS_MAC
#define kATConnectPlatformString @"Mac OS X"
@class ATFeedbackWindowController;
#endif
typedef enum {
ATFeedbackControllerDefault,
ATFeedbackControllerSimple
} ATFeedbackControllerType;
@interface ATConnect : NSObject {
@private
#if TARGET_OS_IPHONE
ATFeedbackController *feedbackController;
ATFeedbackController *currentFeedbackController;
#elif TARGET_OS_MAC
ATFeedbackWindowController *feedbackWindowController;
#endif
NSMutableDictionary *additionalFeedbackData;
NSString *apiKey;
BOOL showTagline;
BOOL shouldTakeScreenshot;
BOOL showEmailField;
NSString *initialName;
NSString *initialEmailAddress;
ATFeedbackControllerType feedbackControllerType;
NSString *customPlaceholderText;
}
@property (nonatomic, copy) NSString *apiKey;
@property (nonatomic, assign) BOOL showTagline;
@property (nonatomic, assign) BOOL shouldTakeScreenshot;
@property (nonatomic, assign) BOOL showEmailField;
@property (nonatomic, copy) NSString *initialName;
@property (nonatomic, copy) NSString *initialEmailAddress;
@property (nonatomic, assign) ATFeedbackControllerType feedbackControllerType;
/*! Set this if you want some custom text to appear as a placeholder in the
feedback text box. */
@property (nonatomic, copy) NSString *customPlaceholderText;
+ (ATConnect *)sharedConnection;
#if TARGET_OS_IPHONE
/*!
* Presents a feedback controller in the window of the given view controller.
*/
- (void)presentFeedbackControllerFromViewController:(UIViewController *)viewController;
/*!
* Dismisses the feedback controller. You normally won't need to call this.
*/
- (void)dismissFeedbackControllerAnimated:(BOOL)animated completion:(void (^)(void))completion;
#elif TARGET_OS_MAC
/*!
* Presents a feedback window.
*/
- (IBAction)showFeedbackWindow:(id)sender;
#endif
/*! Adds an additional data field to any feedback sent. */
- (void)addAdditionalInfoToFeedback:(NSObject<NSCoding> *)object withKey:(NSString *)key;
/*! Removes an additional data field from the feedback sent. */
- (void)removeAdditionalInfoFromFeedbackWithKey:(NSString *)key;
/*!
* Returns the NSBundle corresponding to the bundle containing ATConnect's
* images, xibs, strings files, etc.
*/
+ (NSBundle *)resourceBundle;
@end
/*! Replacement for NSLocalizedString within ApptentiveConnect. Pulls
localized strings out of the resource bundle. */
extern NSString *ATLocalizedString(NSString *key, NSString *comment);

BIN
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/ATFeedbackWindow.nib generated

Binary file not shown.

BIN
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/English.lproj/InfoPlist.strings

Binary file not shown.

44
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/Info.plist

@ -1,44 +0,0 @@
<?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>BuildMachineOSBuild</key>
<string>15C50</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>ApptentiveConnect</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.ApptentiveConnect</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>ApptentiveConnect</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>7C68</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>15C43</string>
<key>DTSDKName</key>
<string>macosx10.11</string>
<key>DTXcode</key>
<string>0720</string>
<key>DTXcodeBuild</key>
<string>7C68</string>
</dict>
</plist>

BIN
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

BIN
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info@2x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

1
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/Current

@ -1 +0,0 @@
A

2
Clocker/ApptentiveConnect/ApptentiveConnect/resources/English.lproj/InfoPlist.strings

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

BIN
Clocker/ApptentiveConnect/ApptentiveConnect/resources/English.lproj/Localizable.strings

Binary file not shown.

28
Clocker/ApptentiveConnect/ApptentiveConnect/resources/Info.plist

@ -1,28 +0,0 @@
<?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>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.${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>1</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

7
Clocker/ApptentiveConnect/ApptentiveConnect/source/ApptentiveConnect_Prefix.pch

@ -1,7 +0,0 @@
//
// Prefix header for all source files of the 'ApptentiveConnect' target in the 'ApptentiveConnect' project.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

36
Clocker/ApptentiveConnect/ApptentiveConnect/source/Controllers/ATFeedbackWindowController.h

@ -1,36 +0,0 @@
//
// ATFeedbackWindowController.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 6/1/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "ATFeedback.h"
#import "ATImageView.h"
#import "ATAPIRequest.h"
#import "ATPlaceholderTextView.h"
@interface ATFeedbackWindowController : NSWindowController <NSWindowDelegate, NSTextViewDelegate, NSComboBoxDelegate, ATAPIRequestDelegate> {
IBOutlet ATPlaceholderTextView *feedbackTextView;
IBOutlet ATImageView *screenshotView;
IBOutlet NSProgressIndicator *progressIndicator;
IBOutlet NSComboBox *nameBox;
IBOutlet NSComboBox *emailBox;
IBOutlet NSComboBox *phoneNumberBox;
IBOutlet NSButton *sendButton;
IBOutlet NSButton *cancelButton;
IBOutlet NSImageView *logoImageView;
@private
ATAPIRequest *feedbackRequest;
ATFeedback *feedback;
}
@property (nonatomic, retain) ATFeedback *feedback;
- (id)initWithFeedback:(ATFeedback *)newFeedback;
- (IBAction)browseForScreenshotPressed:(id)sender;
- (IBAction)cancelPressed:(id)sender;
- (IBAction)sendFeedbackPressed:(id)sender;
- (IBAction)openApptentivePressed:(id)sender;
@end

378
Clocker/ApptentiveConnect/ApptentiveConnect/source/Controllers/ATFeedbackWindowController.m

@ -1,378 +0,0 @@
//
// ATFeedbackWindowController.m
// ApptentiveConnect
//
// Created by Andrew Wooster on 6/1/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import <AddressBook/AddressBook.h>
#import "ATFeedbackWindowController.h"
#import "ATBackend.h"
#import "ATConnect.h"
#import "ATContactStorage.h"
#import "ATImageView.h"
#import "ATConnect_FeedbackWindowPrivate.h"
#import "ATUtilities.h"
#import "ATWebClient.h"
#import <QuartzCore/QuartzCore.h>
@interface ATFeedbackWindowController (Private)
- (void)setup;
- (void)teardown;
/*! Fills in the contact information. */
- (void)fillInContactInfo;
/*! Returns the text view for the current feedback type. */
- (NSTextView *)currentTextView;
/*! Takes text from current text view and puts in feedback. */
- (void)updateFeedbackWithText;
/*! Takes text from feedback and puts in current text view. */
- (void)updateTextWithFeedback;
- (void)setScreenshotToFilename:(NSString *)filename;
- (void)imageChanged:(NSNotification *)notification;
@end
@implementation ATFeedbackWindowController
@synthesize feedback;
- (id)initWithFeedback:(ATFeedback *)newFeedback {
NSBundle *bundle = [ATConnect resourceBundle];
NSString *path = [bundle pathForResource:@"ATFeedbackWindow" ofType:@"nib"];
if ((self = [super initWithWindowNibPath:path owner:self])) {
self.feedback = newFeedback;
}
return self;
}
- (void)dealloc {
[self teardown];
[super dealloc];
}
- (void)windowDidLoad {
[super windowDidLoad];
[self setup];
}
#pragma mark Actions
- (IBAction)browseForScreenshotPressed:(id)sender {
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles:YES];
[openPanel setCanCreateDirectories:NO];
[openPanel setAllowsMultipleSelection:NO];
[openPanel setAllowedFileTypes:[NSArray arrayWithObjects:@"jpg", @"jpeg", @"png", @"gif", @"bmp", nil]];
if ([openPanel runModal] == NSOKButton) {
NSArray *URLs = [openPanel URLs];
for (NSURL *URL in URLs) {
[self setScreenshotToFilename:[URL path]];
}
}
}
- (IBAction)cancelPressed:(id)sender {
[self close];
}
- (IBAction)sendFeedbackPressed:(id)sender {
@synchronized(self) {
if (!feedbackRequest) {
[self updateFeedbackWithText];
[progressIndicator setHidden:NO];
[progressIndicator startAnimation:self];
[progressIndicator setDoubleValue:0.01];
feedbackRequest = [[[ATWebClient sharedClient] requestForPostingFeedback:self.feedback] retain];
feedbackRequest.delegate = self;
[feedbackRequest start];
[sendButton setEnabled:NO];
}
}
}
- (IBAction)openApptentivePressed:(id)sender {
[[NSWorkspace sharedWorkspace] openURL:[[ATBackend sharedBackend] apptentiveHomepageURL]];
}
#pragma mark ATAPIRequestDelegate
- (void)at_APIRequestDidFinish:(ATAPIRequest *)request result:(id)result {
@synchronized(self) {
feedbackRequest.delegate = nil;
[feedbackRequest release];
feedbackRequest = nil;
[progressIndicator setDoubleValue:1.0];
[progressIndicator stopAnimation:self];
[progressIndicator setHidden:YES];
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert addButtonWithTitle:@"Okay"];
[alert setMessageText:@"Thanks! Your feedback has been sent successfully"];
[alert setAlertStyle:NSInformationalAlertStyle];
[alert beginSheetModalForWindow:self.window modalDelegate:self didEndSelector:@selector(thanksSheetDidClose:returnCode:contextInfo:) contextInfo:nil];
}
}
- (void)at_APIRequestDidProgress:(ATAPIRequest *)request {
@synchronized(self) {
[progressIndicator setDoubleValue:(double)[request percentageComplete]];
}
}
- (void)at_APIRequestDidFail:(ATAPIRequest *)request {
//!!
[sendButton setEnabled:YES];
[progressIndicator stopAnimation:self];
[progressIndicator setHidden:YES];
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert addButtonWithTitle:ATLocalizedString(@"Try Again", @"Button title for failed request retry.")];
[alert addButtonWithTitle:ATLocalizedString(@"Cancel", @"Cancel")];
[alert setMessageText:request.errorTitle];
[alert setInformativeText:request.errorMessage];
[alert setAlertStyle:NSWarningAlertStyle];
[alert setIcon:[NSImage imageNamed:NSImageNameCaution]];
[alert beginSheetModalForWindow:self.window modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];
feedbackRequest.delegate = nil;
[feedbackRequest release];
feedbackRequest = nil;
}
- (void)alertDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
if (returnCode == NSAlertFirstButtonReturn) {
[self sendFeedbackPressed:self];
} else if (returnCode == NSAlertSecondButtonReturn) {
[self close];
}
}
- (void)thanksSheetDidClose:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
[[ATBackend sharedBackend] setCurrentFeedback:nil];
[self performSelectorOnMainThread:@selector(close) withObject:nil waitUntilDone:NO];
}
#pragma mark NSWindowDelegate
- (void)windowWillClose:(NSNotification *)notification {
[self teardown];
}
#pragma mark NSComboBoxDelegate
- (void)comboBoxSelectionDidChange:(NSNotification *)notification {
NSComboBox *sender = (NSComboBox *)[notification object];
if (sender) {
NSString *value = (NSString *)[sender itemObjectValueAtIndex:[sender indexOfSelectedItem]];
if (value) {
if (sender == emailBox) {
self.feedback.email = value;
} else if (sender == phoneNumberBox) {
self.feedback.phone = value;
} else if (sender == nameBox) {
self.feedback.name = value;
}
}
}
}
#pragma mark NSTextViewDelegate
- (void)controlTextDidChange:(NSNotification *)aNotification {
NSControl *sender = (NSControl *)[aNotification object];
if (sender && [sender isKindOfClass:[NSComboBox class]]) {
NSString *value = [sender stringValue];
if (value) {
if (sender == emailBox) {
self.feedback.email = value;
} else if (sender == phoneNumberBox) {
self.feedback.phone = value;
} else if (sender == nameBox) {
self.feedback.name = value;
}
}
}
}
@end
@implementation ATFeedbackWindowController (Private)
- (void)setup {
CALayer *viewLayer = [CALayer layer];
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(255.0, 255.0, 255.0, 0.8)]; //RGB plus Alpha Channel
[self.window.contentView setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
[self.window.contentView setLayer:viewLayer];
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSFullSizeContentViewWindowMask;
self.window.titleVisibility = NSWindowTitleHidden;
self.window.delegate = self;
[self.window center];
[self.window setTitle:@"Send Feedback"];
[self fillInContactInfo];
[self updateTextWithFeedback];
if ([self.feedback hasScreenshot]) {
NSImage *screenshot = [[self.feedback copyScreenshot] autorelease];
screenshotView.image = screenshot;
}
[feedbackTextView setTextContainerInset:NSMakeSize(4, 4)];
NSString *placeholder = [[ATConnect sharedConnection] customPlaceholderText];
if (placeholder) {
feedbackTextView.placeholder = placeholder;
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(imageChanged:) name:ATImageViewContentsChanged object:nil];
[logoImageView setImage:[ATBackend imageNamed:@"at_logo_info"]];
[logoImageView setTarget:self];
[logoImageView setAction:@selector(openApptentivePressed:)];
[sendButton setTitle:@"Send Feedback"];
[cancelButton setTitle:@"Cancel"];
}
- (void)teardown {
[self updateFeedbackWithText];
[[ATConnect sharedConnection] feedbackWindowDidClose:self];
self.feedback = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self name:ATImageViewContentsChanged object:nil];
}
- (void)fillInContactInfo {
ATContactStorage *contactStorage = [ATContactStorage sharedContactStorage];
NSMutableArray *names = [NSMutableArray array];
NSMutableArray *emails = [NSMutableArray array];
NSMutableArray *phoneNumbers = [NSMutableArray array];
if (contactStorage.name) {
[names addObject:contactStorage.name];
}
if (contactStorage.email) {
[emails addObject:contactStorage.email];
}
if (contactStorage.phone) {
[phoneNumbers addObject:contactStorage.phone];
}
if (self.feedback.name) {
[names addObject:self.feedback.name];
}
if (self.feedback.email) {
[emails addObject:self.feedback.email];
}
if (self.feedback.phone) {
[phoneNumbers addObject:self.feedback.phone];
}
ABPerson *me = nil;
// Uncommenting the following line will cause OS X to prompt the user for Contacts access.
// "THIS_APP would like to access your contacts. [Don't Allow] [OK]"
// Disabling for now.
// me = [[ABAddressBook sharedAddressBook] me];
if (me) {
NSString *firstName = [me valueForProperty:kABFirstNameProperty];
NSString *middleName = [me valueForProperty:kABMiddleNameProperty];
NSString *lastName = [me valueForProperty:kABLastNameProperty];
NSMutableArray *nameParts = [NSMutableArray array];
if (firstName) {
[nameParts addObject:firstName];
}
if (middleName) {
[nameParts addObject:middleName];
}
if (lastName) {
[nameParts addObject:lastName];
}
if ([nameParts count]) {
NSString *newName = [nameParts componentsJoinedByString:@" "];
if (contactStorage.name == nil || ![contactStorage.name isEqualToString:newName]) {
[names addObject:newName];
}
}
ABMultiValue *abEmails = [me valueForProperty:kABEmailProperty];
if (abEmails && [abEmails count]) {
for (NSInteger i = 0; i < [abEmails count]; i++) {
NSString *abEmail = [abEmails valueAtIndex:i];
if (contactStorage.email == nil || ![contactStorage.email isEqualToString:abEmail]) {
[emails addObject:abEmail];
}
}
}
ABMultiValue *abPhoneNumbers = [me valueForProperty:kABPhoneProperty];
if (abPhoneNumbers && [abPhoneNumbers count]) {
for (NSInteger i = 0; i < [abPhoneNumbers count]; i++) {
NSString *abPhoneNumber = [abPhoneNumbers valueAtIndex:i];
if (contactStorage.phone == nil || ![contactStorage.phone isEqualToString:abPhoneNumber]) {
[phoneNumbers addObject:abPhoneNumber];
}
}
}
}
[ATUtilities uniquifyArray:names];
[ATUtilities uniquifyArray:emails];
[ATUtilities uniquifyArray:phoneNumbers];
if (nameBox && [names count]) {
[nameBox addItemsWithObjectValues:names];
if (self.feedback.name && [names containsObject:self.feedback.name]) {
[nameBox selectItemAtIndex:[names indexOfObject:self.feedback.name]];
} else {
[nameBox selectItemAtIndex:0];
}
}
if (emailBox && [emails count]) {
[emailBox addItemsWithObjectValues:emails];
if (self.feedback.email && [emails containsObject:self.feedback.email]) {
[emailBox selectItemAtIndex:[emails indexOfObject:self.feedback.email]];
} else {
[emailBox selectItemAtIndex:0];
}
}
if (phoneNumberBox && [phoneNumbers count]) {
[phoneNumberBox addItemsWithObjectValues:phoneNumbers];
if (self.feedback.phone && [phoneNumbers containsObject:self.feedback.phone]) {
[phoneNumberBox selectItemAtIndex:[phoneNumbers indexOfObject:self.feedback.phone]];
} else {
[phoneNumberBox selectItemAtIndex:0];
}
}
}
- (NSTextView *)currentTextView {
NSTextView *result = feedbackTextView;
return result;
}
- (void)updateFeedbackWithText {
NSString *text = [[[self currentTextView] textStorage] string];
self.feedback.text = text;
}
- (void)updateTextWithFeedback {
NSTextView *currentTextView = [self currentTextView];
NSRange range = NSMakeRange(0, [[currentTextView textStorage] length]);
NSString *replacement = self.feedback.text ? self.feedback.text : @"";
[[currentTextView textStorage] replaceCharactersInRange:range withString:replacement];
}
- (void)setScreenshotToFilename:(NSString *)filename {
NSImage *image = [[NSImage alloc] initWithContentsOfFile:filename];
if (image) {
self.feedback.screenshot = image;
[screenshotView setImage:image];
}
[image release];
}
- (void)imageChanged:(NSNotification *)notification {
NSObject *obj = [notification object];
if (obj == screenshotView) {
NSImage *feedbackScreenshot = [[self.feedback copyScreenshot] autorelease];
if ([screenshotView image] != feedbackScreenshot) {
self.feedback.screenshot = [screenshotView image];
}
}
}
@end

15
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATConnect_FeedbackWindowPrivate.h

@ -1,15 +0,0 @@
//
// ATConnect_FeedbackWindowPrivate.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 6/28/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "ATConnect.h"
@interface ATConnect (FeedbackWindowPrivate)
- (void)feedbackWindowDidClose:(id)sender;
@end

19
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATConnect_FeedbackWindowPrivate.m

@ -1,19 +0,0 @@
//
// ATConnect_FeedbackWindowPrivate.m
// ApptentiveConnect
//
// Created by Andrew Wooster on 6/28/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import "ATConnect_FeedbackWindowPrivate.h"
@implementation ATConnect (FeedbackWindowPrivate)
- (void)feedbackWindowDidClose:(id)sender {
if (feedbackWindowController && feedbackWindowController == sender) {
[feedbackWindowController autorelease];
feedbackWindowController = nil;
}
}
@end

16
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageButton.h

@ -1,16 +0,0 @@
//
// ATImageButton.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 7/2/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface ATImageButton : NSImageView {
}
@end

18
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageButton.m

@ -1,18 +0,0 @@
//
// ATImageButton.m
// ApptentiveConnect
//
// Created by Andrew Wooster on 7/2/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import "ATImageButton.h"
@implementation ATImageButton
- (void)mouseDown:(NSEvent *)theEvent {
if ([self target] && [self action]) {
[NSApp sendAction:[self action] to:[self target] from:self];
}
}
@end

17
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageView.h

@ -1,17 +0,0 @@
//
// ATImageView.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 6/28/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import <Cocoa/Cocoa.h>
NSString *const ATImageViewContentsChanged;
@interface ATImageView : NSImageView {
}
@end

27
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATImageView.m

@ -1,27 +0,0 @@
//
// ATImageView.m
// ApptentiveConnect
//
// Created by Andrew Wooster on 6/28/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#import "ATImageView.h"
NSString *const ATImageViewContentsChanged = @"ATImageViewContentsChanged";
@implementation ATImageView
- (void)setImage:(NSImage *)newImage {
BOOL wasNew = NO;
if ([self image] != newImage) {
wasNew = YES;
}
[super setImage:newImage];
if (wasNew) {
[[NSNotificationCenter defaultCenter] postNotificationName:ATImageViewContentsChanged object:self];
}
}
@end

17
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATPlaceholderTextView.h

@ -1,17 +0,0 @@
//
// ATPlaceholderTextView.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 8/30/12.
// Copyright (c) 2012 Apptentive, Inc. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface ATPlaceholderTextView : NSTextView {
@private
NSString *placeholder;
}
@property (nonatomic, retain) NSString *placeholder;
- (BOOL)isDefault;
@end

65
Clocker/ApptentiveConnect/ApptentiveConnect/source/Misc/ATPlaceholderTextView.m

@ -1,65 +0,0 @@
//
// ATPlaceholderTextView.m
// ApptentiveConnect
//
// Created by Andrew Wooster on 8/30/12.
// Copyright (c) 2012 Apptentive, Inc. All rights reserved.
//
#import "ATPlaceholderTextView.h"
@implementation ATPlaceholderTextView
@synthesize placeholder;
- (id)initWithFrame:(NSRect)frame {
if ((self = [super initWithFrame:frame])) {
}
return self;
}
- (void)dealloc {
[placeholder release], placeholder = nil;
[super dealloc];
}
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
if (placeholder != nil && [self isDefault]) {
CGRect r = NSRectToCGRect([self frame]);
r.origin.x += 6;
CGSize inset = NSSizeToCGSize([self textContainerInset]);
NSRect textRect = NSRectFromCGRect(CGRectInset(r, inset.width, inset.height));
NSAttributedString *s = [[NSAttributedString alloc] initWithString:self.placeholder attributes:[NSDictionary dictionaryWithObject:[NSColor grayColor] forKey:NSForegroundColorAttributeName]];
[s drawInRect:textRect];
[s release], s = nil;
}
}
- (void)setPlaceholder:(NSString *)newPlaceholder {
if (placeholder != newPlaceholder) {
[placeholder release];
placeholder = nil;
placeholder = [newPlaceholder retain];
[self setNeedsDisplay:YES];
}
}
- (BOOL)isDefault {
if (![self string] || [[self string] length] == 0) return YES;
return NO;
}
- (BOOL)becomeFirstResponder {
if (placeholder != nil) {
[self setNeedsDisplay:YES];
}
return [super becomeFirstResponder];
}
- (BOOL)resignFirstResponder {
if (placeholder != nil) {
[self setNeedsDisplay:YES];
}
return [super resignFirstResponder];
}
@end

17
Clocker/ApptentiveConnect/ApptentiveConnect/tests/ATSampleTest.h

@ -1,17 +0,0 @@
//
// ATSampleTest.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 5/30/11.
// Copyright 2011 Planetary Scale LLC. All rights reserved.
//
#import <SenTestingKit/SenTestingKit.h>
@interface ATSampleTest : SenTestCase {
}
- (void)testTests;
@end

17
Clocker/ApptentiveConnect/ApptentiveConnect/tests/ATSampleTest.m

@ -1,17 +0,0 @@
//
// ATSampleTest.m
// ApptentiveConnect
//
// Created by Andrew Wooster on 5/30/11.
// Copyright 2011 Planetary Scale LLC. All rights reserved.
//
#import "ATSampleTest.h"
@implementation ATSampleTest
- (void)testTests {
STAssertTrue(YES, @"Should always pass.");
}
@end

22
Clocker/ApptentiveConnect/ApptentiveConnect/tests/ApptentiveUnitTests-Info.plist

@ -1,22 +0,0 @@
<?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>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.${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>

249
Clocker/ApptentiveConnect/ApptentiveConnect/xibs/ATFeedbackWindow.xib

@ -1,249 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
<capability name="box content view" minToolsVersion="7.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="ATFeedbackWindowController">
<connections>
<outlet property="cancelButton" destination="40" id="112"/>
<outlet property="emailBox" destination="24" id="67"/>
<outlet property="feedbackTextView" destination="109" id="111"/>
<outlet property="nameBox" destination="22" id="66"/>
<outlet property="phoneNumberBox" destination="26" id="68"/>
<outlet property="progressIndicator" destination="57" id="60"/>
<outlet property="screenshotView" destination="13" id="88"/>
<outlet property="sendButton" destination="38" id="92"/>
<outlet property="window" destination="1" id="3"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Send Feedback" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" animationBehavior="default" id="1">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="309" y="98" width="379" height="528"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
<view key="contentView" id="2">
<rect key="frame" x="0.0" y="0.0" width="379" height="528"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="104">
<rect key="frame" x="20" y="230" width="339" height="176"/>
<autoresizingMask key="autoresizingMask"/>
<clipView key="contentView" id="ERA-pO-91r">
<rect key="frame" x="1" y="1" width="337" height="174"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView importsGraphics="NO" richText="NO" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="109" customClass="ATPlaceholderTextView">
<rect key="frame" x="0.0" y="0.0" width="337" height="174"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<size key="minSize" width="337" height="174"/>
<size key="maxSize" width="689" height="10000000"/>
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="337" height="174"/>
<size key="maxSize" width="689" height="10000000"/>
<connections>
<outlet property="delegate" destination="-2" id="110"/>
</connections>
</textView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="0.99128919860627185" horizontal="YES" id="108">
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="107">
<rect key="frame" x="322" y="1" width="16" height="174"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<view id="103">
<rect key="frame" x="20" y="172" width="693" height="57"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView id="13" customClass="ATImageView">
<rect key="frame" x="0.0" y="4" width="48" height="48"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" selectable="YES" editable="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="14"/>
</imageView>
<textField verticalHuggingPriority="750" id="15">
<rect key="frame" x="50" y="20" width="292" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Attach a screenshot. (Optional)" id="16">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" id="84">
<rect key="frame" x="248" y="11" width="98" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Browse…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="85">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="browseForScreenshotPressed:" target="-2" id="86"/>
</connections>
</button>
</subviews>
</view>
<box autoresizesSubviews="NO" title="Contact Information (Optional)" borderType="line" id="21">
<rect key="frame" x="17" y="56" width="345" height="116"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<view key="contentView" id="tQf-lo-L4t">
<rect key="frame" x="1" y="1" width="343" height="100"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<comboBox verticalHuggingPriority="750" id="22" userLabel="Name Box">
<rect key="frame" x="112" y="66" width="223" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="23">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<outlet property="delegate" destination="-2" id="89"/>
</connections>
</comboBox>
<comboBox verticalHuggingPriority="750" id="26" userLabel="Phone Number Box">
<rect key="frame" x="112" y="10" width="223" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="27">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<outlet property="delegate" destination="-2" id="91"/>
</connections>
</comboBox>
<textField verticalHuggingPriority="750" id="28">
<rect key="frame" x="10" y="71" width="99" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Name:" id="29">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="30">
<rect key="frame" x="10" y="44" width="99" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Email:" id="31">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="32">
<rect key="frame" x="10" y="16" width="99" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Phone Number:" id="33">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<comboBox verticalHuggingPriority="750" id="24" userLabel="Email Box">
<rect key="frame" x="112" y="36" width="223" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="25">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<outlet property="delegate" destination="-2" id="90"/>
</connections>
</comboBox>
</subviews>
</view>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<button verticalHuggingPriority="750" id="38">
<rect key="frame" x="231" y="12" width="134" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Send Feedback" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="39">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="sendFeedbackPressed:" target="-2" id="65"/>
</connections>
</button>
<progressIndicator hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="bar" id="57">
<rect key="frame" x="20" y="19" width="128" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</progressIndicator>
<textField verticalHuggingPriority="750" id="105">
<rect key="frame" x="118" y="450" width="242" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="We'd love to hear your feedback!" id="106">
<font key="font" size="13" name="HelveticaNeue-Light"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="w67-Zy-sbN">
<rect key="frame" x="118" y="429" width="242" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Entering your contact information will help" id="acW-hX-N0a">
<font key="font" size="12" name="HelveticaNeue-Thin"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="Zyi-mo-cyd">
<rect key="frame" x="118" y="414" width="242" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="us get back to you!" id="dmd-4c-7qG">
<font key="font" size="12" name="HelveticaNeue-Thin"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" id="40">
<rect key="frame" x="154" y="12" width="82" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="41">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="cancelPressed:" target="-2" id="64"/>
</connections>
</button>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="yby-ks-U3D">
<rect key="frame" x="22" y="423" width="91" height="81"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-256" id="GY7-Dm-Gic"/>
</imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="Xda-0B-qgr">
<rect key="frame" x="118" y="473" width="158" height="35"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Clocker v1.2" id="TOY-gt-W6r">
<font key="font" size="29" name="HelveticaNeue-Thin"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
</view>
<point key="canvasLocation" x="59.5" y="54"/>
</window>
</objects>
<resources>
<image name="ClockerIcon-256" width="256" height="256"/>
</resources>
</document>

34
Clocker/ApptentiveConnect/CHANGELOG.md

@ -1,34 +0,0 @@
2015-02-28 pkamb v0.4.12
--------------------------
This release removes a request to access the OS X Contacts list to pre-fill the Feedback Dialog form.
The Contacts permission request was unexpected to some developers and users. This will be re-added as an option in the future.
2014-12-05 wooster v0.4.11
--------------------------
Fixes problem where prompting on launch would never work.
This was a regression due to a bad merge.
2012-10-08 wooster v0.4.8
-------------------------
Fixing APPTENTIVE-571, in which custom app data wasn't being sent with feedback.
2012-09-19 wooster v0.4.7
-------------------------
The big change here is a switch to git subtrees from a submodule for the copy of apptentive-ios in the project. This makes checking out the project and getting started much easier.
Changes:
* Fix for ratings dialog not showing up due to reachability failing.
* OSX-6 Switch to git subtrees for apptentive-ios
2012-08-29 wooster v0.4.6
-------------------------
Changes:
* Pulled in v0.4.5 of apptentive-ios.
* Went from JSONKit to PrefixedJSONKit.
* Removed methods for displaying different feedback window types on OS X.
* Added placeholder text in feedback window.

9
Clocker/ApptentiveConnect/CONTRIBUTING.md

@ -1,9 +0,0 @@
Contributing
------------
We love contributions!
Any contributions to the master apptentive-osx project must sign the [Individual Contributor License Agreement (CLA)](https://docs.google.com/a/apptentive.com/spreadsheet/viewform?formkey=dDhMaXJKQnRoX0dRMzZNYnp5bk1Sbmc6MQ#gid=0). It's a doc that makes our lawyers happy and ensures we can provide a solid open source project.
When you want to submit a change, send us a [pull request](https://github.com/apptentive/apptentive-osx/pulls). Before we merge, we'll check to make sure you're on the list of people who've signed our CLA.
Thanks!

2
Clocker/ApptentiveConnect/FeedbackDemo/English.lproj/InfoPlist.strings

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

3857
Clocker/ApptentiveConnect/FeedbackDemo/English.lproj/MainMenu.xib

File diff suppressed because it is too large Load Diff

32
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo-Info.plist

@ -1,32 +0,0 @@
<?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>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>ApptentiveLogo</string>
<key>CFBundleIdentifier</key>
<string>com.apptentive.${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</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

416
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/project.pbxproj

@ -1,416 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
256AC3DA0F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m */; };
491CA3B915F065DF0003BC38 /* ApptentiveLogo.icns in Resources */ = {isa = PBXBuildFile; fileRef = 491CA3A515F026E10003BC38 /* ApptentiveLogo.icns */; };
49626DDA13970DC30093534C /* ApptentiveConnect.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49626DD713970DB80093534C /* ApptentiveConnect.framework */; };
49626DDF13970DD60093534C /* ApptentiveConnect.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 49626DD713970DB80093534C /* ApptentiveConnect.framework */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
49626DD613970DB80093534C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
remoteInfo = ApptentiveConnect;
};
49626DD813970DB80093534C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 49626B6D13942A2B0093534C;
remoteInfo = ApptentiveUnitTests;
};
49626DDB13970DCE0093534C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
remoteInfo = ApptentiveConnect;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
49626D9613970A080093534C /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
49626DDF13970DD60093534C /* ApptentiveConnect.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
49626E0013970FE60093534C /* Copy Products */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 16;
files = (
);
name = "Copy Products";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
256AC3D80F4B6AC300CF3369 /* FeedbackDemoAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedbackDemoAppDelegate.h; sourceTree = "<group>"; };
256AC3D90F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FeedbackDemoAppDelegate.m; sourceTree = "<group>"; };
256AC3F00F4B6AF500CF3369 /* FeedbackDemo_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedbackDemo_Prefix.pch; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
491CA3A515F026E10003BC38 /* ApptentiveLogo.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ApptentiveLogo.icns; sourceTree = "<group>"; };
49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ApptentiveConnect.xcodeproj; path = ../ApptentiveConnect/ApptentiveConnect.xcodeproj; sourceTree = SOURCE_ROOT; };
4971B31513BB955100774B70 /* defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = "<group>"; };
4972847913CA6273002AD591 /* ATAppRatingFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATAppRatingFlow.h; path = "../apptentive-ios/ApptentiveConnect/source/Rating Flow/ATAppRatingFlow.h"; sourceTree = SOURCE_ROOT; };
49891FE813B3BCA1007967BA /* ATConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect.h; path = "../apptentive-ios/ApptentiveConnect/source/ATConnect.h"; sourceTree = SOURCE_ROOT; };
8D1107310486CEB800E47090 /* FeedbackDemo-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "FeedbackDemo-Info.plist"; sourceTree = "<group>"; };
8D1107320486CEB800E47090 /* FeedbackDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FeedbackDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
8D11072E0486CEB800E47090 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
49626DDA13970DC30093534C /* ApptentiveConnect.framework in Frameworks */,
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
256AC3D80F4B6AC300CF3369 /* FeedbackDemoAppDelegate.h */,
256AC3D90F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m */,
4971B31513BB955100774B70 /* defines.h */,
);
name = Classes;
sourceTree = "<group>";
};
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D1107320486CEB800E47090 /* FeedbackDemo.app */,
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* FeedbackDemo */ = {
isa = PBXGroup;
children = (
49891FE813B3BCA1007967BA /* ATConnect.h */,
4972847913CA6273002AD591 /* ATAppRatingFlow.h */,
49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = FeedbackDemo;
sourceTree = "<group>";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
256AC3F00F4B6AF500CF3369 /* FeedbackDemo_Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
491CA3A415F026E10003BC38 /* art */,
8D1107310486CEB800E47090 /* FeedbackDemo-Info.plist */,
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
);
name = Resources;
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
491CA3A415F026E10003BC38 /* art */ = {
isa = PBXGroup;
children = (
491CA3A515F026E10003BC38 /* ApptentiveLogo.icns */,
);
path = art;
sourceTree = "<group>";
};
49626DD213970DB80093534C /* Products */ = {
isa = PBXGroup;
children = (
49626DD713970DB80093534C /* ApptentiveConnect.framework */,
49626DD913970DB80093534C /* ApptentiveUnitTests.octest */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
8D1107260486CEB800E47090 /* FeedbackDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FeedbackDemo" */;
buildPhases = (
49626E0013970FE60093534C /* Copy Products */,
8D1107290486CEB800E47090 /* Resources */,
8D11072C0486CEB800E47090 /* Sources */,
8D11072E0486CEB800E47090 /* Frameworks */,
49626D9613970A080093534C /* CopyFiles */,
);
buildRules = (
);
dependencies = (
49626DDC13970DCE0093534C /* PBXTargetDependency */,
);
name = FeedbackDemo;
productInstallPath = "$(HOME)/Applications";
productName = FeedbackDemo;
productReference = 8D1107320486CEB800E47090 /* FeedbackDemo.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0460;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FeedbackDemo" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* FeedbackDemo */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 49626DD213970DB80093534C /* Products */;
ProjectRef = 49626DD113970DB80093534C /* ApptentiveConnect.xcodeproj */;
},
);
projectRoot = "";
targets = (
8D1107260486CEB800E47090 /* FeedbackDemo */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
49626DD713970DB80093534C /* ApptentiveConnect.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = ApptentiveConnect.framework;
remoteRef = 49626DD613970DB80093534C /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
49626DD913970DB80093534C /* ApptentiveUnitTests.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveUnitTests.octest;
remoteRef = 49626DD813970DB80093534C /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
8D1107290486CEB800E47090 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
491CA3B915F065DF0003BC38 /* ApptentiveLogo.icns in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D11072C0486CEB800E47090 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072D0486CEB800E47090 /* main.m in Sources */,
256AC3DA0F4B6AC300CF3369 /* FeedbackDemoAppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
49626DDC13970DCE0093534C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = ApptentiveConnect;
targetProxy = 49626DDB13970DCE0093534C /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C165DFE840E0CC02AAC07 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
1DDD58150DA1D0A300B32029 /* English */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
C01FCF4B08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "";
GCC_DYNAMIC_NO_PIC = NO;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = FeedbackDemo_Prefix.pch;
INFOPLIST_FILE = "FeedbackDemo-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.7;
OTHER_LDFLAGS = (
"-ObjC",
"-all_load",
);
PRODUCT_NAME = FeedbackDemo;
};
name = Debug;
};
C01FCF4C08A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = "";
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = FeedbackDemo_Prefix.pch;
INFOPLIST_FILE = "FeedbackDemo-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.7;
OTHER_LDFLAGS = (
"-ObjC",
"-all_load",
);
PRODUCT_NAME = FeedbackDemo;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
SDKROOT = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "FeedbackDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4B08A954540054247B /* Debug */,
C01FCF4C08A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "FeedbackDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}

7
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata generated

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

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

Binary file not shown.

91
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/FeedbackDemo.xcscheme

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0720"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "FeedbackDemo.app"
BlueprintName = "FeedbackDemo"
ReferencedContainer = "container:FeedbackDemo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "FeedbackDemo.app"
BlueprintName = "FeedbackDemo"
ReferencedContainer = "container:FeedbackDemo.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "FeedbackDemo.app"
BlueprintName = "FeedbackDemo"
ReferencedContainer = "container:FeedbackDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D1107260486CEB800E47090"
BuildableName = "FeedbackDemo.app"
BlueprintName = "FeedbackDemo"
ReferencedContainer = "container:FeedbackDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

22
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist

@ -1,22 +0,0 @@
<?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>SchemeUserState</key>
<dict>
<key>FeedbackDemo.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D1107260486CEB800E47090</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

22
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemoAppDelegate.h

@ -1,22 +0,0 @@
//
// FeedbackDemoAppDelegate.h
// FeedbackDemo
//
// Created by Andrew Wooster on 5/30/11.
// Copyright 2011 Planetary Scale LLC. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import <ApptentiveConnect/ATConnect.h>
@interface FeedbackDemoAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSTextField *versionTextField;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextField *versionTextField;
- (IBAction)showFeedbackWindow:(id)sender;
- (IBAction)showRatingFlow:(id)sender;
@end

39
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemoAppDelegate.m

@ -1,39 +0,0 @@
//
// FeedbackDemoAppDelegate.m
// FeedbackDemo
//
// Created by Andrew Wooster on 5/30/11.
// Copyright 2011 Planetary Scale LLC. All rights reserved.
//
#import "FeedbackDemoAppDelegate.h"
#import <ApptentiveConnect/ATConnect.h>
#import <ApptentiveConnect/ATAppRatingFlow.h>
#import "defines.h"
@implementation FeedbackDemoAppDelegate
@synthesize window;
@synthesize versionTextField;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
[[ATConnect sharedConnection] setApiKey:kApptentiveAPIKey];
self.versionTextField.stringValue = [NSString stringWithFormat:@"ApptentiveConnect v%@", kATConnectVersionString];
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID];
[ratingFlow appDidLaunch:YES];
}
- (IBAction)showFeedbackWindow:(id)sender {
[[ATConnect sharedConnection] showFeedbackWindow:sender];
}
- (IBAction)showFeedbackWindowForFeedback:(id)sender {
[[ATConnect sharedConnection] showFeedbackWindow:self];
}
- (IBAction)showRatingFlow:(id)sender {
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID];
[ratingFlow showEnjoymentDialog:sender];
}
@end

7
Clocker/ApptentiveConnect/FeedbackDemo/FeedbackDemo_Prefix.pch

@ -1,7 +0,0 @@
//
// Prefix header for all source files of the 'FeedbackDemo' target in the 'FeedbackDemo' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

BIN
Clocker/ApptentiveConnect/FeedbackDemo/art/ApptentiveLogo.icns

Binary file not shown.

11
Clocker/ApptentiveConnect/FeedbackDemo/defines.h

@ -1,11 +0,0 @@
/*
* defines.h
* FeedbackDemo
*
* Created by Andrew Wooster on 6/29/11.
* Copyright 2011 Apptentive. All rights reserved.
*
*/
#define kApptentiveAPIKey @"<your API key>"
#define kApptentiveAppID @"<your App Store ID>"

14
Clocker/ApptentiveConnect/FeedbackDemo/main.m

@ -1,14 +0,0 @@
//
// main.m
// FeedbackDemo
//
// Created by Andrew Wooster on 5/30/11.
// Copyright 2011 Planetary Scale LLC. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}

24
Clocker/ApptentiveConnect/LICENSE.txt

@ -1,24 +0,0 @@
Copyright (c) 2011, Apptentive, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the Apptentive, Inc. nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Apptentive, Inc. BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

125
Clocker/ApptentiveConnect/README.md

@ -1,125 +0,0 @@
Apptentive Mac SDK
==================
This Cocoa library for OS X allows you to add a quick and easy in-app-feedback
mechanism to your Mac applications. Feedback is sent to the Apptentive web
service.
Quickstart
==========
Sample Application
------------------
The sample application FeedbackDemo demonstrates how to integrate the SDK
with your application.
Required Frameworks
-------------------
In order to use `ApptentiveConnect`, your project must link against the
following frameworks:
* AppKit
* CoreGraphics
* Foundation
* QuartzCore
* SystemConfiguration
Project Settings for Xcode 4
----------------------------
Check out the `apptentive-osx` project from GitHub. You'll either want to put it in a
sub-folder of your project or, if you use `git`, add it as a [git submodule](http://help.github.com/submodules/).
In your target's `Build Settings` section, add the following to your Other Linker Flags settings:
`-ObjC -all_load`
Then, open your project in Xcode and drag the `ApptentiveConnect.xcodeproj` project file
to your project:
![Step 1](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step1.png)
In your apps' target settings, add `ApptentiveConnect` to the "Target Dependencies" build phase:
![Step 2](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step2.png)
Next, add `ApptentiveConnect.framework` to the "Link Binary With Libraries" build phase:
![Step 3](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step3.png)
Finally, drag the `ApptentiveConnect.framework` from the `ApptentiveConnect` project to the
"Copy Bundle Resources" build phase:
![Step 4](https://raw.github.com/apptentive/apptentive-osx/master/etc/screenshots/integration_step4.png)
Using the Library
-----------------
`ApptentiveConnect` queues feedback and attempts to upload in the background. This
is intended to provide as quick a mechanism for submitting feedback as possible.
In order for queued/interrupted feedback uploads to continue uploading, we
recommending instantiating `ATConnect` and setting the API key at application
startup, like:
``` objective-c
#import <ApptentiveConnect/ATConnect.h>
// ...
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
ATConnect *connection = [ATConnect sharedConnection];
connection.apiKey = kApptentiveAPIKey;
// ...
}
```
Where `kApptentiveAPIKey` is an `NSString` containing your API key. As soon
as you set the API key on the shared connection object, any queued feedback
will start to upload, pending network availability. You also should not have
to set the API key again on the shared connection object.
Now, you can show the Apptentive feedback UI with:
``` objective-c
#import <ApptentiveConnect/ATConnect.h>
// ...
ATConnect *connection = [ATConnect sharedConnection];
[connection showFeedbackWindow:sender];
```
Easy!
App Rating Flow
---------------
`ApptentiveConnect` now provides an app rating flow similar to other projects
such as [appirator](https://github.com/arashpayan/appirater). To use it, add
the `ATAppRatingFlow.h` header file to your project.
Then, at startup, instantiate a shared `ATAppRatingFlow` object with your
iTunes app ID (see "Finding Your iTunes App ID" below):
``` objective-c
#import <ApptentiveConnect/ATAppRatingFlow.h>
// ...
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[[ATConnect sharedConnection] setApiKey:kApptentiveAPIKey];
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID];
[ratingFlow appDidLaunch:YES];
}
```
You can also choose to show the dialog manually:
``` objective-c
ATAppRatingFlow *ratingFlow = [ATAppRatingFlow sharedRatingFlowWithAppID:kApptentiveAppID];
[ratingFlow showEnjoymentDialog:sender];
```
This is helpful if you want to implement custom triggers for the ratings
flow.
**Finding Your iTunes App ID**
In [iTunesConnect](https://itunesconnect.apple.com/), go to "Manage Your
Applications" and click on your application. In the "App Information"
section of the page, look for the "Apple ID". It will be a number. This is
your iTunes application ID.

28
Clocker/ApptentiveConnect/apptentive-osx.podspec

@ -1,28 +0,0 @@
Pod::Spec.new do |s|
s.name = "apptentive-osx"
s.version = "0.4.12"
s.license = "BSD"
s.summary = "Apptentive Customer Communications SDK."
s.homepage = "https://www.apptentive.com/"
s.authors = { "Andrew Wooster" => "andrew@apptentive.com",
"Peter Kamb" => "peter@apptentive.com" }
s.source = { :git => "https://github.com/apptentive/apptentive-osx.git", :tag => "v#{s.version}" }
s.platform = :osx, '10.7'
s.osx.deployment_target = '10.7'
s.description = <<-DESC
This Cocoa library for OS X allows you to add a quick and easy in-app-feedback
mechanism to your Mac applications. Feedback is sent to the Apptentive web service.
DESC
s.public_header_files = "apptentive-ios/ApptentiveConnect/source/ATConnect.h",
"apptentive-ios/ApptentiveConnect/source/Rating Flow/ATAppRatingFlow.h"
s.source_files = "ApptentiveConnect/source/**/*.{h,m}",
"apptentive-ios/ApptentiveConnect/ext/**/*.{h,m}",
"apptentive-ios/ApptentiveConnect/source/**/*.{h,m}"
s.exclude_files = "apptentive-ios/ApptentiveConnect/source/Controllers/**/*",
"apptentive-ios/ApptentiveConnect/source/Custom Views/**/*",
"apptentive-ios/ApptentiveConnect/source/Surveys/**/*"
s.requires_arc = false
s.frameworks = "Cocoa", "SystemConfiguration", "AddressBook"
s.xcconfig = { "GCC_PREPROCESSOR_DEFINITIONS" => "JSONKIT_PREFIX=AT AT_LOGGING_LEVEL_INFO=1 AT_LOGGING_LEVEL_ERROR=1 AT_RESOURCE_BUNDLE=1" }
s.resource_bundle = {"ApptentiveResources" => ["ApptentiveConnect/xibs/**/*.xib", "apptentive-ios/ApptentiveConnect/art/generated/at_logo_info*.png"] }
end

BIN
Clocker/ApptentiveConnect/etc/screenshots/integration_step1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

BIN
Clocker/ApptentiveConnect/etc/screenshots/integration_step2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

BIN
Clocker/ApptentiveConnect/etc/screenshots/integration_step3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

BIN
Clocker/ApptentiveConnect/etc/screenshots/integration_step4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

40
Clocker/BackgroundView.h

@ -1,40 +0,0 @@
// Created by Abhishek Banthia on 11/4/15.
// Copyright (c) 2015 Abhishek Banthia All rights reserved.
//
// Copyright (c) 2015, Abhishek Banthia
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define ARROW_WIDTH 12
#define ARROW_HEIGHT 12
@interface BackgroundView : NSView
{
NSInteger _arrowX;
}
@property (nonatomic, assign) NSInteger arrowX;
@property (nonatomic, strong) NSTrackingArea *trackingArea;
@end

148
Clocker/BackgroundView.m

@ -1,148 +0,0 @@
// Created by Abhishek Banthia on 11/4/15.
// Copyright (c) 2015 Abhishek Banthia All rights reserved.
//
// Copyright (c) 2015, Abhishek Banthia
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import "BackgroundView.h"
#define FILL_OPACITY 0.9f
#define STROKE_OPACITY 1.0f
#define LINE_THICKNESS 1.0f
#define CORNER_RADIUS 6.0f
#define SEARCH_INSET 10.0f
#import "ApplicationDelegate.h"
#import "PanelController.h"
#pragma mark -
@implementation BackgroundView
@synthesize arrowX = _arrowX;
#pragma mark -
- (void)drawRect:(NSRect)dirtyRect
{
NSRect contentRect = NSInsetRect([self bounds], LINE_THICKNESS, LINE_THICKNESS);
NSBezierPath *path = [NSBezierPath bezierPath];
[path moveToPoint:NSMakePoint(_arrowX, NSMaxY(contentRect))];
[path lineToPoint:NSMakePoint(_arrowX + ARROW_WIDTH / 2, NSMaxY(contentRect) - ARROW_HEIGHT)];
[path lineToPoint:NSMakePoint(NSMaxX(contentRect) - CORNER_RADIUS, NSMaxY(contentRect) - ARROW_HEIGHT)];
NSPoint topRightCorner = NSMakePoint(NSMaxX(contentRect), NSMaxY(contentRect) - ARROW_HEIGHT);
[path curveToPoint:NSMakePoint(NSMaxX(contentRect), NSMaxY(contentRect) - ARROW_HEIGHT - CORNER_RADIUS)
controlPoint1:topRightCorner controlPoint2:topRightCorner];
[path lineToPoint:NSMakePoint(NSMaxX(contentRect), NSMinY(contentRect) + CORNER_RADIUS)];
NSPoint bottomRightCorner = NSMakePoint(NSMaxX(contentRect), NSMinY(contentRect));
[path curveToPoint:NSMakePoint(NSMaxX(contentRect) - CORNER_RADIUS, NSMinY(contentRect))
controlPoint1:bottomRightCorner controlPoint2:bottomRightCorner];
[path lineToPoint:NSMakePoint(NSMinX(contentRect) + CORNER_RADIUS, NSMinY(contentRect))];
[path curveToPoint:NSMakePoint(NSMinX(contentRect), NSMinY(contentRect) + CORNER_RADIUS)
controlPoint1:contentRect.origin controlPoint2:contentRect.origin];
[path lineToPoint:NSMakePoint(NSMinX(contentRect), NSMaxY(contentRect) - ARROW_HEIGHT - CORNER_RADIUS)];
NSPoint topLeftCorner = NSMakePoint(NSMinX(contentRect), NSMaxY(contentRect) - ARROW_HEIGHT);
[path curveToPoint:NSMakePoint(NSMinX(contentRect) + CORNER_RADIUS, NSMaxY(contentRect) - ARROW_HEIGHT)
controlPoint1:topLeftCorner controlPoint2:topLeftCorner];
[path lineToPoint:NSMakePoint(_arrowX - ARROW_WIDTH / 2, NSMaxY(contentRect) - ARROW_HEIGHT)];
[path closePath];
NSString *theme = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultTheme"];
[theme isEqualToString:@"Default"] ?
[[NSColor colorWithDeviceRed:255.0f green:255.0f blue:255.0f alpha:FILL_OPACITY] setFill]:
[[NSColor colorWithDeviceRed:0.0f green:0.0f blue:0.0f alpha:FILL_OPACITY] setFill];
[path fill];
[NSGraphicsContext saveGraphicsState];
NSBezierPath *clip = [NSBezierPath bezierPathWithRect:[self bounds]];
[clip appendBezierPath:path];
[clip addClip];
[path setLineWidth:LINE_THICKNESS * 2];
[[NSColor whiteColor] setStroke];
[path stroke];
[NSGraphicsContext restoreGraphicsState];
}
-(void)mouseEntered:(NSEvent *)theEvent
{
[super mouseEntered:theEvent];
ApplicationDelegate *delegate = (ApplicationDelegate*)[NSApplication sharedApplication].delegate;
PanelController *controller = delegate.panelController;
[controller showOptions:YES];
}
-(void)mouseExited:(NSEvent *)theEvent
{
[super mouseExited:theEvent];
ApplicationDelegate *delegate = (ApplicationDelegate*) [NSApplication sharedApplication].delegate;
PanelController *controller = delegate.panelController;
[controller showOptions:NO];
}
-(void)updateTrackingAreas
{
if(self.trackingArea != nil) {
[self removeTrackingArea:self.trackingArea];
}
int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
self.trackingArea = [ [NSTrackingArea alloc] initWithRect:[self bounds]
options:opts
owner:self
userInfo:nil];
[self addTrackingArea:self.trackingArea];
}
#pragma mark -
#pragma mark Public accessors
- (void)setArrowX:(NSInteger)value
{
_arrowX = value;
[self setNeedsDisplay:YES];
}
@end

51
Clocker/CLOneWindow/CLOneWindow.xib

@ -1,51 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CLOneWindowController">
<connections>
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="480" height="275"/>
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="480" height="275"/>
<autoresizingMask key="autoresizingMask"/>
</view>
<toolbar key="toolbar" implicitIdentifier="15DCF3D0-4463-497F-B0C3-14E5359E9266" autosavesConfiguration="NO" displayMode="iconAndLabel" sizeMode="small" id="eut-Zr-nON">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="716E502A-B9AE-4776-9A41-E42176C403F7" label="General" paletteLabel="General" tag="-1" image="NSHomeTemplate" id="Khj-zc-D5t">
<connections>
<action selector="openPreferences:" target="-2" id="rJI-gB-Gcb"/>
</connections>
</toolbarItem>
<toolbarItem implicitItemIdentifier="B5E58161-D319-4490-AD3C-CED0C67FD50E" label="Appearance" paletteLabel="About Us" tag="-1" image="NSInfo" autovalidates="NO" id="ti4-MJ-8Xu">
<connections>
<action selector="openAboutUsView:" target="-2" id="Aec-lN-CqR"/>
</connections>
</toolbarItem>
</allowedToolbarItems>
<defaultToolbarItems>
<toolbarItem reference="Khj-zc-D5t"/>
<toolbarItem reference="ti4-MJ-8Xu"/>
</defaultToolbarItems>
</toolbar>
<connections>
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
</connections>
<point key="canvasLocation" x="347" y="305.5"/>
</window>
</objects>
<resources>
<image name="NSHomeTemplate" width="14" height="14"/>
<image name="NSInfo" width="32" height="32"/>
</resources>
</document>

20
Clocker/CLOneWindow/CLOneWindowController.h

@ -1,20 +0,0 @@
//
// CLOneWindowController.h
// Clocker
//
// Created by Abhishek Banthia on 12/12/15.
//
//
#import <Cocoa/Cocoa.h>
#import "CLPreferencesViewController.h"
#import "CLAboutUsViewController.h"
@interface CLOneWindowController : NSWindowController
@property (strong, nonatomic) CLPreferencesViewController *preferencesView;
@property (strong, nonatomic) CLAboutUsViewController *aboutUsView;
+ (instancetype)sharedWindow;
@end

69
Clocker/CLOneWindow/CLOneWindowController.m

@ -1,69 +0,0 @@
//
// CLOneWindowController.m
// Clocker
//
// Created by Abhishek Banthia on 12/12/15.
//
//
#import "CLOneWindowController.h"
NSString *const CLOneWindowNibIdentifier = @"CLOneWindow";
@interface CLOneWindowController ()
@end
@implementation CLOneWindowController
static CLOneWindowController *sharedWindow = nil;
- (void)windowDidLoad
{
[super windowDidLoad];
self.window.titleVisibility = NSWindowTitleHidden;
[self openPreferences:nil];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
+ (instancetype)sharedWindow
{
if (sharedWindow == nil)
{
/*Using a thread safe pattern*/
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedWindow = [[self alloc] initWithWindowNibName:CLOneWindowNibIdentifier];
});
}
return sharedWindow;
}
- (IBAction)openPreferences:(id)sender
{
self.preferencesView = [[CLPreferencesViewController alloc] initWithNibName:@"CLPreferencesView" bundle:nil];
[self setWindowWithContentView:self.preferencesView.view];
[self.aboutUsView.view removeFromSuperview];
self.aboutUsView = nil;
}
- (void)setWindowWithContentView:(NSView *)contentView
{
[self.window setContentSize:contentView.frame.size];
[self.window setContentView:contentView];
}
- (IBAction)openAboutUsView:(id)sender
{
self.aboutUsView = [[CLAboutUsViewController alloc] initWithNibName:@"CLAboutUsView" bundle:nil];
[self setWindowWithContentView:self.aboutUsView.view];
[self.preferencesView.view removeFromSuperview];
self.preferencesView = nil;
}
@end

17
Clocker/CLRatingCellView.h

@ -1,17 +0,0 @@
//
// CLRatingCellView.h
// Clocker
//
// Created by Abhishek Banthia on 12/11/15.
//
//
#import <Cocoa/Cocoa.h>
@interface CLRatingCellView : NSTableCellView
@property (weak, nonatomic) IBOutlet NSTextField *leftField;
@property (weak, nonatomic) IBOutlet NSButton *leftButton;
@property (weak, nonatomic) IBOutlet NSButton *rightButton;
@end

111
Clocker/CLRatingCellView.m

@ -1,111 +0,0 @@
//
// CLRatingCellView.m
// Clocker
//
// Created by Abhishek Banthia on 12/11/15.
//
//
#import "CLRatingCellView.h"
#import "iRate.h"
#import <QuartzCore/QuartzCore.h>
#import "PanelController.h"
@implementation CLRatingCellView
NSString *const CLGitHubIssueURL =@"https://github.com/Abhishaker17/Clocker/issues";
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
}
- (IBAction)actionOnNegativeFeedback:(id)sender
{
NSButton *leftButton = (NSButton *)sender;
if ([leftButton.title isEqualToString:@"Not Really"]) {
[self setAnimatedStringValue:@"Mind giving us feedback?" andTextField:self.leftField withLeftButtonTitle:@"No, thanks" andRightButtonTitle:@"Yes?"];
}
else
{
//Make the row disappear and call remind later
PanelController *panelRef = [[[NSApplication sharedApplication] mainWindow] windowController];
panelRef.showReviewCell = NO;
[panelRef updateDefaultPreferences];
[panelRef closePanel];
[[iRate sharedInstance] remindLater];
}
}
- (IBAction)actionOnPositiveFeedback:(id)sender
{
NSButton *rightButton = (NSButton *)sender;
if ([rightButton.title isEqualToString:@"Yes!"]) {
[self setAnimatedStringValue:@"Would you mind rating Clocker?" andTextField:self.leftField withLeftButtonTitle:@"No, thanks" andRightButtonTitle:@"Yes"];
}
else if ([rightButton.title isEqualToString:@"Yes?"])
{
[self updateMainTableView];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLGitHubIssueURL]];
}
else
{
//Make the row disappear and call rate
[[iRate sharedInstance] rate];
[self updateMainTableView];
}
}
- (void)updateMainTableView
{
PanelController *panelRef = [[[NSApplication sharedApplication] mainWindow] windowController];
panelRef.showReviewCell = NO;
[panelRef updateDefaultPreferences];
}
- (void) setAnimatedStringValue:(NSString *)aString andTextField:(NSTextField *)textfield withLeftButtonTitle:(NSString *)leftTitle andRightButtonTitle:(NSString *)rightTitle
{
if ([[textfield stringValue] isEqual: aString])
{
return;
}
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration: 1.0];
[context setTimingFunction: [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut]];
[self.imageView.animator setAlphaValue:0.0];
[self.leftButton.animator setAlphaValue:0.0];
[self.rightButton.animator setAlphaValue:0.0];
[textfield.animator setAlphaValue: 0.0];
}
completionHandler:^{
[textfield setStringValue: aString];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration: 1.0];
[context setTimingFunction: [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseIn]];
[self.imageView.animator setAlphaValue: 1.0];
[textfield.animator setAlphaValue: 1.0];
[self.leftButton.animator setAlphaValue:1.0];
[self.rightButton.animator setAlphaValue:1.0];
if ([self.leftButton.title isEqualToString:@"Not Really"]) {
[self.leftButton.animator setTitle:@"No, thanks"];
}
if ([self.rightButton.title isEqualToString:@"Yes!"]) {
[self.rightButton.animator setTitle:@"Yes, sure"];
}
[self.leftButton.animator setTitle:leftTitle];
[self.rightButton.animator setTitle:rightTitle];
} completionHandler: ^{
}];
}];
}
@end

50
Clocker/Clocker-Info.plist

@ -1,50 +0,0 @@
<?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>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</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.2.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>17</string>
<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>94088f95c41979e8019b67d5795f52bbbe7104d4</string>
<key>Kits</key>
<array>
<dict>
<key>KitInfo</key>
<dict/>
<key>KitName</key>
<string>Crashlytics</string>
</dict>
</array>
</dict>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>LSUIElement</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2015, Abhishek Banthia</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>RequestsOpenAccess</key>
<string>YES</string>
</dict>
</plist>

9
Clocker/Clocker-Prefix.pch

@ -1,9 +0,0 @@
//
// Prefix header for all source files of the 'Clocker' target in the 'Clocker' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

10
Clocker/Clocker.entitlements

@ -1,10 +0,0 @@
<?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>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>

36
Clocker/ColoredButton.h

@ -1,36 +0,0 @@
//
// ColoredButton.h
// Clocker
//
// Created by Abhishek Banthia on 11/4/15.
// Copyright (c) 2015 Abhishek Banthia All rights reserved.
//
// Copyright (c) 2015, Abhishek Banthia
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <Cocoa/Cocoa.h>
@interface ColoredButton : NSButton
@end

61
Clocker/ColoredButton.m

@ -1,61 +0,0 @@
//
// ColoredButton.m
// Clocker
//
// Created by Abhishek Banthia on 11/4/15.
// Copyright (c) 2015 Abhishek Banthia All rights reserved.
//
// Copyright (c) 2015, Abhishek Banthia
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import "ColoredButton.h"
@implementation ColoredButton
- (void)setButtonTitleFor:(NSButton*)button toString:(NSString*)title withColor:(NSColor*)color
{
NSFont *font = [NSFont fontWithName:@"HelveticaNeue-Light" size:12.0];
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:color, NSForegroundColorAttributeName, font,NSFontAttributeName, nil];
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:title attributes:attrsDictionary];
[button setAttributedTitle:attrString];
}
-(void)awakeFromNib
{
NSString *title = self.title;
NSColor *color = [NSColor blackColor];
self.imagePosition = NSImageLeft;
[self setButtonTitleFor:self toString:title withColor:color];
}
@end

21
Clocker/Custom Table Cell Views/CLTimezoneCellView.h

@ -1,21 +0,0 @@
//
// CLTimezoneCellView.h
// Clocker
//
// Created by Abhishek Banthia on 12/13/15.
//
//
#import <Cocoa/Cocoa.h>
@interface CLTimezoneCellView : NSTableCellView
@property (weak) IBOutlet NSTextField *customName;
@property (weak) IBOutlet NSTextField *relativeDate;
@property (weak) IBOutlet NSTextField *time;
@property (nonatomic) NSInteger rowNumber;
- (void)updateFontFamilyWithFontName:(NSString *)fontName andCell:(CLTimezoneCellView*)cell;
- (void)updateTextColorWithColor:(NSColor *)color andCell:(CLTimezoneCellView*)cell;
- (void)setDefaultThemeForCell:(CLTimezoneCellView *)cell;
@end

69
Clocker/Custom Table Cell Views/CLTimezoneCellView.m

@ -1,69 +0,0 @@
//
// CLTimezoneCellView.m
// Clocker
//
// Created by Abhishek Banthia on 12/13/15.
//
//
#import "CLTimezoneCellView.h"
#import "PanelController.h"
#import "CommonStrings.h"
@implementation CLTimezoneCellView
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
}
- (IBAction)labelDidChange:(id)sender
{
NSTextField *customLabelCell = (NSTextField*) sender;
PanelController *panelController = (PanelController *)[[[NSApplication sharedApplication] mainWindow] windowController];
NSString *originalValue = customLabelCell.stringValue;
NSString *customLabelValue = [originalValue stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
if ([[sender superview] isKindOfClass:[self class]]) {
CLTimezoneCellView *cellView = (CLTimezoneCellView *)[sender superview];
NSDictionary *timezoneDictionary = panelController.defaultPreferences[cellView.rowNumber];
NSDictionary *mutableTimeZoneDict = [timezoneDictionary mutableCopy];
(customLabelValue.length > 0) ? [mutableTimeZoneDict setValue:customLabelValue forKey:CLCustomLabel] : [mutableTimeZoneDict setValue:CLEmptyString forKey:CLCustomLabel] ;
[panelController.defaultPreferences replaceObjectAtIndex:cellView.rowNumber withObject:mutableTimeZoneDict];
[[NSUserDefaults standardUserDefaults] setObject:panelController.defaultPreferences forKey:CLDefaultPreferenceKey];
[panelController updateDefaultPreferences];
[panelController.mainTableview reloadData];
[[NSNotificationCenter defaultCenter] postNotificationName:CLCustomLabelChangedNotification object:nil];
}
}
- (void)updateFontFamilyWithFontName:(NSString *)fontName andCell:(CLTimezoneCellView*)cell
{
cell.relativeDate.font = [NSFont fontWithName:fontName size:13];
cell.customName.font = [NSFont fontWithName:fontName size:15];
cell.time.font = [NSFont fontWithName:fontName size:29];
}
- (void)updateTextColorWithColor:(NSColor *)color andCell:(CLTimezoneCellView*)cell
{
cell.relativeDate.textColor = color;
cell.customName.textColor = color;
cell.time.textColor = color;
}
- (void)setDefaultThemeForCell:(CLTimezoneCellView *)cell
{
cell.relativeDate.font = [NSFont fontWithName:@"Helvetica-Bold" size:13];
cell.customName.font = [NSFont fontWithName:@"Helvetica-Light" size:15];
cell.time.font = [NSFont fontWithName:@"Helvetica-Light" size:29];
}
@end

BIN
Clocker/Images/ClockerIcon-16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

BIN
Clocker/Images/ClockerIcon-256.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

BIN
Clocker/Images/FB-FindUsonFacebook-online-144.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

BIN
Clocker/Images/PowerIcon-White.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
Clocker/Images/PowerIcon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
Clocker/Images/Settings-White.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

BIN
Clocker/Images/Status.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

BIN
Clocker/Images/Status@2x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

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

Loading…
Cancel
Save