Browse Source

Major Changes!

v1.2.1
Abhishek Banthia 9 years ago
parent
commit
156def92d7
  1. 211
      Clocker.xcodeproj/project.pbxproj
  2. BIN
      Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  3. 16
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 3
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/Clocker.xcscheme
  5. 2
      Clocker/AboutUsWindow/CLAboutUsView.xib
  6. 4
      Clocker/AboutUsWindow/CLAboutUsViewController.m
  7. 28
      Clocker/ApplicationDelegate.m
  8. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect
  9. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Headers
  10. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Resources
  11. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/ApptentiveConnect
  12. 120
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATAppRatingFlow.h
  13. 95
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATConnect.h
  14. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/ATFeedbackWindow.nib
  15. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
  16. 44
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/Info.plist
  17. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info.png
  18. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info@2x.png
  19. 1
      Clocker/ApptentiveConnect/ApptentiveConnect.framework/Versions/Current
  20. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect
  21. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Headers
  22. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Resources
  23. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/ApptentiveConnect
  24. 120
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATAppRatingFlow.h
  25. 95
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Headers/ATConnect.h
  26. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/ATFeedbackWindow.nib
  27. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
  28. 44
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/Info.plist
  29. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info.png
  30. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/A/Resources/at_logo_info@2x.png
  31. 1
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.framework/Versions/Current
  32. 939
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.pbxproj
  33. 7
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  34. BIN
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  35. 80
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/ApptentiveConnect.xcscheme
  36. 80
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/ApptentiveUnitTests.xcscheme
  37. 32
      Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist
  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. 21
      Clocker/ApptentiveConnect/apptentive-ios/.gitignore
  75. 1328
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.pbxproj
  76. 7
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  77. 73
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcshareddata/xcschemes/ApptentiveConnect.xcscheme
  78. 63
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcshareddata/xcschemes/ApptentiveResources.xcscheme
  79. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/Checkmark.opacity
  80. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/button_shadow_overlay.psd
  81. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/button_shadow_overlay@2x.psd
  82. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/camera icon button
  83. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/camera icon.opacity
  84. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/camera icon.png
  85. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/cancel_bg.psd
  86. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_apptentive_icon_small.png
  87. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_apptentive_icon_small@2x.png
  88. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_button_shadow_overlay.png
  89. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_button_shadow_overlay@2x.png
  90. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_bg.png
  91. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_bg@2x.png
  92. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_highlighted_bg.png
  93. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_highlighted_bg@2x.png
  94. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_checkmark.png
  95. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_checkmark@2x.png
  96. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dialog_paper_bg.png
  97. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dialog_paper_bg@2x.png
  98. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dotted_red_line.png
  99. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dotted_red_line@2x.png
  100. BIN
      Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_gray_line.png
  101. Some files were not shown because too many files have changed in this diff Show More

211
Clocker.xcodeproj/project.pbxproj

@ -8,7 +8,6 @@
/* Begin PBXBuildFile section */
9A25F7451C1A5E17007D369B /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A25F7421C1A5E17007D369B /* Info.plist */; };
9A25F7461C1A5E17007D369B /* iRate.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9A25F7431C1A5E17007D369B /* iRate.bundle */; };
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 */; };
@ -26,6 +25,11 @@
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 */; };
9A5951EB1C1D1EAB009C17AA /* ApptentiveConnect.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5951E81C1D1E92009C17AA /* ApptentiveConnect.framework */; };
9A5951EC1C1D1EB4009C17AA /* ApptentiveConnect.framework in Resources */ = {isa = PBXBuildFile; fileRef = 9A5951D11C1D1D94009C17AA /* ApptentiveConnect.framework */; };
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 */; };
@ -39,10 +43,61 @@
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;
};
9A5951DC1C1D1E35009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951D61C1D1E35009C17AA /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 496DC37F1333D35600743F65;
remoteInfo = ApptentiveConnect;
};
9A5951DE1C1D1E35009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951D61C1D1E35009C17AA /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 496DC38C1333D35600743F65;
remoteInfo = ApptentiveConnectTests;
};
9A5951E01C1D1E35009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951D61C1D1E35009C17AA /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 49D1118C13341A7C00603373;
remoteInfo = ApptentiveResources;
};
9A5951E71C1D1E92009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951E21C1D1E91009C17AA /* ApptentiveConnect.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
remoteInfo = ApptentiveConnect;
};
9A5951E91C1D1E92009C17AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9A5951E21C1D1E91009C17AA /* 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>"; };
9A25F7421C1A5E17007D369B /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Clocker/Rate App/Info.plist"; sourceTree = "<group>"; };
9A25F7431C1A5E17007D369B /* iRate.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = iRate.bundle; path = "Clocker/Rate App/iRate.bundle"; 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>"; };
@ -64,6 +119,16 @@
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>"; };
9A5951D41C1D1E1D009C17AA /* apptentive-ios */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "apptentive-ios"; path = "Clocker/ApptentiveConnect/apptentive-ios"; sourceTree = "<group>"; };
9A5951D61C1D1E35009C17AA /* ApptentiveConnect.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ApptentiveConnect.xcodeproj; path = "Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj"; sourceTree = "<group>"; };
9A5951E21C1D1E91009C17AA /* ApptentiveConnect.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ApptentiveConnect.xcodeproj; path = Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj; 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>"; };
@ -97,6 +162,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9A5951EB1C1D1EAB009C17AA /* ApptentiveConnect.framework in Frameworks */,
9AC678E41C1ABAB9003B4F6B /* QuartzCore.framework in Frameworks */,
9A43792C1BEC231100F4E27F /* libz.tbd in Frameworks */,
9A5951BA1C1D0A22009C17AA /* Crashlytics.framework in Frameworks */,
@ -125,7 +191,6 @@
children = (
9A25F7411C1A5E17007D369B /* iRate.h */,
9A25F7421C1A5E17007D369B /* Info.plist */,
9A25F7431C1A5E17007D369B /* iRate.bundle */,
9A25F7441C1A5E17007D369B /* iRate.m */,
);
name = Rate;
@ -142,6 +207,53 @@
name = "View Controllers";
sourceTree = "<group>";
};
9A5951C81C1D1B6F009C17AA /* Products */ = {
isa = PBXGroup;
children = (
9A5951CD1C1D1B6F009C17AA /* ApptentiveConnect.framework */,
9A5951CF1C1D1B6F009C17AA /* ApptentiveUnitTests.octest */,
);
name = Products;
sourceTree = "<group>";
};
9A5951D71C1D1E35009C17AA /* Products */ = {
isa = PBXGroup;
children = (
9A5951DD1C1D1E35009C17AA /* libApptentiveConnect.a */,
9A5951DF1C1D1E35009C17AA /* ApptentiveConnectTests.octest */,
9A5951E11C1D1E35009C17AA /* ApptentiveResources.bundle */,
);
name = Products;
sourceTree = "<group>";
};
9A5951E31C1D1E91009C17AA /* Products */ = {
isa = PBXGroup;
children = (
9A5951E81C1D1E92009C17AA /* ApptentiveConnect.framework */,
9A5951EA1C1D1E92009C17AA /* 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 = (
@ -210,13 +322,16 @@
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 */,
9A5951E21C1D1E91009C17AA /* ApptentiveConnect.xcodeproj */,
9A25F7481C1A5E21007D369B /* Rate */,
);
sourceTree = "<group>";
@ -232,6 +347,10 @@
DD4F7C0713C30F9F00825C6E /* Frameworks */ = {
isa = PBXGroup;
children = (
9A5951D61C1D1E35009C17AA /* ApptentiveConnect.xcodeproj */,
9A5951D41C1D1E1D009C17AA /* apptentive-ios */,
9A5951D11C1D1D94009C17AA /* ApptentiveConnect.framework */,
9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */,
9A5951B91C1D0A22009C17AA /* Crashlytics.framework */,
9AC678E31C1ABAB9003B4F6B /* QuartzCore.framework */,
9A4379211BEC223900F4E27F /* Security.framework */,
@ -294,6 +413,20 @@
mainGroup = DD4F7BF913C30F9F00825C6E;
productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 9A5951C81C1D1B6F009C17AA /* Products */;
ProjectRef = 9A5951C71C1D1B6F009C17AA /* ApptentiveConnect.xcodeproj */;
},
{
ProductGroup = 9A5951D71C1D1E35009C17AA /* Products */;
ProjectRef = 9A5951D61C1D1E35009C17AA /* ApptentiveConnect.xcodeproj */;
},
{
ProductGroup = 9A5951E31C1D1E91009C17AA /* Products */;
ProjectRef = 9A5951E21C1D1E91009C17AA /* ApptentiveConnect.xcodeproj */;
},
);
projectRoot = "";
targets = (
DD4F7C0313C30F9F00825C6E /* Clocker */,
@ -301,15 +434,68 @@
};
/* 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;
};
9A5951DD1C1D1E35009C17AA /* libApptentiveConnect.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libApptentiveConnect.a;
remoteRef = 9A5951DC1C1D1E35009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
9A5951DF1C1D1E35009C17AA /* ApptentiveConnectTests.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveConnectTests.octest;
remoteRef = 9A5951DE1C1D1E35009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
9A5951E11C1D1E35009C17AA /* ApptentiveResources.bundle */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveResources.bundle;
remoteRef = 9A5951E01C1D1E35009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
9A5951E81C1D1E92009C17AA /* ApptentiveConnect.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = ApptentiveConnect.framework;
remoteRef = 9A5951E71C1D1E92009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
9A5951EA1C1D1E92009C17AA /* ApptentiveUnitTests.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = ApptentiveUnitTests.octest;
remoteRef = 9A5951E91C1D1E92009C17AA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
DD4F7C0213C30F9F00825C6E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9A5951EC1C1D1EB4009C17AA /* ApptentiveConnect.framework in Resources */,
9A5951FD1C1D592D009C17AA /* iVersion.bundle in Resources */,
9A392EEE1C1CE9950072C10A /* CLPreferencesView.xib in Resources */,
9A56DB811C1CFB73004CE6AF /* Panel.xib in Resources */,
9A43792E1BEC256200F4E27F /* Media.xcassets in Resources */,
9A25F7461C1A5E17007D369B /* iRate.bundle in Resources */,
9A25F7451C1A5E17007D369B /* Info.plist in Resources */,
9A392EE91C1CDD530072C10A /* CLAboutUsView.xib in Resources */,
9A5951C21C1D0AAD009C17AA /* CLOneWindow.xib in Resources */,
@ -346,6 +532,7 @@
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 */,
@ -353,6 +540,7 @@
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 */,
@ -406,11 +594,16 @@
"$(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 = (
"-ObjC",
"-all_load",
);
PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker;
PRODUCT_NAME = Clocker;
PROVISIONING_PROFILE = "";
@ -503,11 +696,16 @@
"$(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 = (
"-ObjC",
"-all_load",
);
PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker;
PRODUCT_NAME = Clocker;
PROVISIONING_PROFILE = "";
@ -527,11 +725,16 @@
"$(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 = (
"-ObjC",
"-all_load",
);
PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker;
PRODUCT_NAME = Clocker;
PROVISIONING_PROFILE = "";

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

Binary file not shown.

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

@ -13,5 +13,21 @@
stopOnStyle = "0">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Clocker/Updated Version/iVersion.m"
timestampString = "471684604.922529"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "1143"
endingLineNumber = "1143"
landmarkName = "-didDismissAlert:withButtonAtIndex:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

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

@ -52,7 +52,8 @@
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
showNonLocalizedStrings = "YES"
language = "en">
language = "en"
region = "JP">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference

2
Clocker/AboutUsWindow/CLAboutUsView.xib

@ -146,7 +146,7 @@
<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="321" y="253.5"/>
<point key="canvasLocation" x="578" y="300.5"/>
</view>
</objects>
<resources>

4
Clocker/AboutUsWindow/CLAboutUsViewController.m

@ -7,6 +7,7 @@
//
#import "CLAboutUsViewController.h"
#import <ApptentiveConnect/ATConnect.h>
@interface CLAboutUsViewController ()
@ -38,7 +39,8 @@ NSString *const CLFacebookPageURL = @"https://www.facebook.com/ClockerMenubarClo
- (IBAction)reportIssue:(id)sender
{
//
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLIssueURL]];
ATConnect *connection = [ATConnect sharedConnection];
[connection showFeedbackWindow:sender];
}
- (IBAction)openFacebookPage:(id)sender

28
Clocker/ApplicationDelegate.m

@ -30,6 +30,8 @@
#import <Crashlytics/Crashlytics.h>
#import "iRate.h"
#import "CommonStrings.h"
#import "iVersion.h"
#import <ApptentiveConnect/ATConnect.h>
@implementation ApplicationDelegate
@ -61,23 +63,47 @@ void *kContextActivePanel = &kContextActivePanel;
{
//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
{
ATConnect *connection = [ATConnect sharedConnection];
connection.apiKey = @"b9bff3e37b738748b671a751f09fea3a419661bac3e6e11fa5e854b463db3ba0";
NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
NSMutableArray *newDefaults = [[NSMutableArray alloc] init];
if (defaultPreference.count == 0)
{
NSDictionary *defaultDictionary = @{CLTimezoneName : [NSTimeZone systemTimeZone].name, CLCustomLabel : CLEmptyString};
NSMutableArray *newDefaults = [[NSMutableArray alloc] initWithObjects:defaultDictionary, nil];
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];
}
// Install icon into the menu bar
self.menubarController = [[MenubarController alloc] init];

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/ApptentiveConnect

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

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Headers

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

1
Clocker/ApptentiveConnect/ApptentiveConnect.framework/Resources

@ -0,0 +1 @@
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

@ -0,0 +1,120 @@
//
// 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

@ -0,0 +1,95 @@
//
// 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

@ -0,0 +1,44 @@
<?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.

After

Width:  |  Height:  |  Size: 14 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

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

@ -0,0 +1 @@
A

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

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

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

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

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

@ -0,0 +1 @@
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

@ -0,0 +1,120 @@
//
// 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

@ -0,0 +1,95 @@
//
// 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

@ -0,0 +1,44 @@
<?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.

After

Width:  |  Height:  |  Size: 14 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

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

@ -0,0 +1 @@
A

939
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.pbxproj

@ -0,0 +1,939 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
491CA39015F019E20003BC38 /* PJSONKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 491CA38E15F019E20003BC38 /* PJSONKit.h */; };
491CA39115F019E20003BC38 /* PJSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA38F15F019E20003BC38 /* PJSONKit.m */; };
491CA39215F019E20003BC38 /* PJSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA38F15F019E20003BC38 /* PJSONKit.m */; };
491CA3B515F029630003BC38 /* ATPlaceholderTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 491CA3B315F029630003BC38 /* ATPlaceholderTextView.h */; };
491CA3B615F029630003BC38 /* ATPlaceholderTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */; };
491CA3B715F029630003BC38 /* ATPlaceholderTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */; };
491CA3BB15F0663C0003BC38 /* at_logo_info@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 491CA3BA15F0663C0003BC38 /* at_logo_info@2x.png */; };
49598DBC15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 49598DBA15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h */; };
49598DBD15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */; };
49598DBE15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */; };
49626B7913942A7E0093534C /* ApptentiveConnect.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */; };
49626B7E13942A9A0093534C /* ATSampleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626B7D13942A9A0093534C /* ATSampleTest.m */; };
49626C36139437070093534C /* ATAPIRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C2B139437070093534C /* ATAPIRequest.h */; };
49626C37139437070093534C /* ATAPIRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C2C139437070093534C /* ATAPIRequest.m */; };
49626C38139437070093534C /* ATConnectionChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C2D139437070093534C /* ATConnectionChannel.h */; };
49626C39139437070093534C /* ATConnectionChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C2E139437070093534C /* ATConnectionChannel.m */; };
49626C3A139437070093534C /* ATConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C2F139437070093534C /* ATConnectionManager.h */; };
49626C3B139437070093534C /* ATConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C30139437070093534C /* ATConnectionManager.m */; };
49626C3C139437070093534C /* ATURLConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C31139437070093534C /* ATURLConnection.h */; };
49626C3D139437070093534C /* ATURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C32139437070093534C /* ATURLConnection.m */; };
49626C3E139437070093534C /* ATURLConnection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C33139437070093534C /* ATURLConnection_Private.h */; };
49626C3F139437070093534C /* ATWebClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C34139437070093534C /* ATWebClient.h */; };
49626C40139437070093534C /* ATWebClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C35139437070093534C /* ATWebClient.m */; };
49626C46139437580093534C /* NSData+ATBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C44139437580093534C /* NSData+ATBase64.h */; };
49626C47139437580093534C /* NSData+ATBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C45139437580093534C /* NSData+ATBase64.m */; };
49626C58139437690093534C /* ATUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C56139437690093534C /* ATUtilities.h */; };
49626C59139437690093534C /* ATUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C57139437690093534C /* ATUtilities.m */; };
49626C67139437DD0093534C /* ATConnect.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C65139437DD0093534C /* ATConnect.h */; settings = {ATTRIBUTES = (Public, ); }; };
49626C68139437DD0093534C /* ATConnect.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C66139437DD0093534C /* ATConnect.m */; };
49626C7A139439050093534C /* ATBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C72139439050093534C /* ATBackend.h */; };
49626C7B139439050093534C /* ATBackend.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C73139439050093534C /* ATBackend.m */; };
49626C7C139439050093534C /* ATContactStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C74139439050093534C /* ATContactStorage.h */; };
49626C7D139439050093534C /* ATContactStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C75139439050093534C /* ATContactStorage.m */; };
49626C80139439050093534C /* ATFeedback.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C78139439050093534C /* ATFeedback.h */; };
49626C81139439050093534C /* ATFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C79139439050093534C /* ATFeedback.m */; };
49626C9113943C310093534C /* ATReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626C8F13943C310093534C /* ATReachability.h */; };
49626C9213943C310093534C /* ATReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626C9013943C310093534C /* ATReachability.m */; };
49626C9613943C520093534C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49626C9513943C520093534C /* SystemConfiguration.framework */; };
49626D19139444C20093534C /* ATFeedbackTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D13139444C20093534C /* ATFeedbackTask.h */; };
49626D1A139444C20093534C /* ATFeedbackTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D14139444C20093534C /* ATFeedbackTask.m */; };
49626D1B139444C20093534C /* ATTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D15139444C20093534C /* ATTask.h */; };
49626D1C139444C20093534C /* ATTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D16139444C20093534C /* ATTask.m */; };
49626D1D139444C20093534C /* ATTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D17139444C20093534C /* ATTaskQueue.h */; };
49626D1E139444C20093534C /* ATTaskQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D18139444C20093534C /* ATTaskQueue.m */; };
49626D4F1397047A0093534C /* ATFeedbackWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 49626D4E1397047A0093534C /* ATFeedbackWindow.xib */; };
49626D53139704D00093534C /* ATFeedbackWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 49626D51139704D00093534C /* ATFeedbackWindowController.h */; };
49626D54139704D00093534C /* ATFeedbackWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 49626D52139704D00093534C /* ATFeedbackWindowController.m */; };
4964BF2E17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF2C17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h */; };
4964BF2F17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */; };
4964BF3017C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */; };
4964BF3417C5D13F000DC2E8 /* ATLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF3117C5D13E000DC2E8 /* ATLog.h */; };
4964BF3517C5D13F000DC2E8 /* ATLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF3217C5D13F000DC2E8 /* ATLogger.h */; };
4964BF3617C5D13F000DC2E8 /* ATLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3317C5D13F000DC2E8 /* ATLogger.m */; };
4964BF3717C5D13F000DC2E8 /* ATLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3317C5D13F000DC2E8 /* ATLogger.m */; };
4964BF3917C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */; };
4964BF3A17C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */; };
4964BF3D17C5D2B5000DC2E8 /* ATWebClient_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4964BF3B17C5D2B5000DC2E8 /* ATWebClient_Private.h */; };
4964BF3E17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */; };
4964BF3F17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */; };
4971AFF513BA871600774B70 /* ATImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4971AFF313BA871600774B70 /* ATImageView.h */; };
4971AFF613BA871600774B70 /* ATImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4971AFF413BA871600774B70 /* ATImageView.m */; };
4971B07913BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4971B07713BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h */; };
4971B07A13BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4971B07813BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m */; };
4971B47413BFBB7C00774B70 /* at_logo_info.png in Resources */ = {isa = PBXBuildFile; fileRef = 4971B47313BFBB7C00774B70 /* at_logo_info.png */; };
4971B4CB13BFBEFF00774B70 /* ATImageButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4971B4C913BFBEFF00774B70 /* ATImageButton.h */; };
4971B4CC13BFBEFF00774B70 /* ATImageButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4971B4CA13BFBEFF00774B70 /* ATImageButton.m */; };
4972847713CA625D002AD591 /* ATAppRatingFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4972847513CA625D002AD591 /* ATAppRatingFlow.h */; settings = {ATTRIBUTES = (Public, ); }; };
4972847813CA625D002AD591 /* ATAppRatingFlow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4972847613CA625D002AD591 /* ATAppRatingFlow.m */; };
4982FE74157C0BEF00A1ED63 /* ApptentiveMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE69157C0BEF00A1ED63 /* ApptentiveMetrics.h */; };
4982FE75157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */; };
4982FE76157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */; };
4982FE77157C0BEF00A1ED63 /* ATFeedbackMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE6B157C0BEF00A1ED63 /* ATFeedbackMetrics.h */; };
4982FE78157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */; };
4982FE79157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */; };
4982FE7A157C0BEF00A1ED63 /* ATMetric.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE6D157C0BEF00A1ED63 /* ATMetric.h */; };
4982FE7B157C0BEF00A1ED63 /* ATMetric.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6E157C0BEF00A1ED63 /* ATMetric.m */; };
4982FE7C157C0BEF00A1ED63 /* ATMetric.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE6E157C0BEF00A1ED63 /* ATMetric.m */; };
4982FE7D157C0BEF00A1ED63 /* ATSurveyMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE6F157C0BEF00A1ED63 /* ATSurveyMetrics.h */; };
4982FE7E157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */; };
4982FE7F157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */; };
4982FE80157C0BEF00A1ED63 /* ATWebClient+Metrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE72157C0BEF00A1ED63 /* ATWebClient+Metrics.h */; };
4982FE81157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */; };
4982FE82157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */; };
4982FE86157C0C2700A1ED63 /* ATAppConfigurationUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE84157C0C2700A1ED63 /* ATAppConfigurationUpdater.h */; };
4982FE87157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */; };
4982FE88157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */; };
4982FE8D157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE89157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h */; };
4982FE8E157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */; };
4982FE8F157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */; };
4982FE90157C0C3D00A1ED63 /* ATAppRatingMetrics.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE8B157C0C3D00A1ED63 /* ATAppRatingMetrics.h */; };
4982FE91157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */; };
4982FE92157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */; };
4982FE94157C0C4D00A1ED63 /* ATWebClient_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE93157C0C4D00A1ED63 /* ATWebClient_Private.h */; };
4982FE97157C0C5A00A1ED63 /* ATRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE95157C0C5A00A1ED63 /* ATRecord.h */; };
4982FE98157C0C5A00A1ED63 /* ATRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE96157C0C5A00A1ED63 /* ATRecord.m */; };
4982FE99157C0C5A00A1ED63 /* ATRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE96157C0C5A00A1ED63 /* ATRecord.m */; };
4982FE9C157C0C6700A1ED63 /* ATRecordTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 4982FE9A157C0C6700A1ED63 /* ATRecordTask.h */; };
4982FE9D157C0C6700A1ED63 /* ATRecordTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */; };
4982FE9E157C0C6700A1ED63 /* ATRecordTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */; };
4989203013B539D6007967BA /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989202F13B539D6007967BA /* AddressBook.framework */; };
4989204B13B53B04007967BA /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989202F13B539D6007967BA /* AddressBook.framework */; };
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
9A5951EF1C1D332B009C17AA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5951EE1C1D332B009C17AA /* QuartzCore.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
49626B7713942A760093534C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
remoteInfo = ApptentiveConnect;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
089C1667FE841158C02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = resources/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
32DBCF5E0370ADEE00C91783 /* ApptentiveConnect_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ApptentiveConnect_Prefix.pch; path = source/ApptentiveConnect_Prefix.pch; sourceTree = "<group>"; };
491CA38E15F019E20003BC38 /* PJSONKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PJSONKit.h; path = PrefixedJSONKit/PJSONKit.h; sourceTree = "<group>"; };
491CA38F15F019E20003BC38 /* PJSONKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PJSONKit.m; path = PrefixedJSONKit/PJSONKit.m; sourceTree = "<group>"; };
491CA3B315F029630003BC38 /* ATPlaceholderTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATPlaceholderTextView.h; path = source/Misc/ATPlaceholderTextView.h; sourceTree = "<group>"; };
491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATPlaceholderTextView.m; path = source/Misc/ATPlaceholderTextView.m; sourceTree = "<group>"; };
491CA3BA15F0663C0003BC38 /* at_logo_info@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "at_logo_info@2x.png"; path = "../apptentive-ios/ApptentiveConnect/art/generated/at_logo_info@2x.png"; sourceTree = "<group>"; };
49598DBA15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppConfigurationUpdateTask.h; sourceTree = "<group>"; };
49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppConfigurationUpdateTask.m; sourceTree = "<group>"; };
49626B6D13942A2B0093534C /* ApptentiveUnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ApptentiveUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
49626B6E13942A2B0093534C /* ApptentiveUnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "ApptentiveUnitTests-Info.plist"; path = "tests/ApptentiveUnitTests-Info.plist"; sourceTree = "<group>"; };
49626B7C13942A9A0093534C /* ATSampleTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATSampleTest.h; path = tests/ATSampleTest.h; sourceTree = "<group>"; };
49626B7D13942A9A0093534C /* ATSampleTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATSampleTest.m; path = tests/ATSampleTest.m; sourceTree = "<group>"; };
49626C2B139437070093534C /* ATAPIRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAPIRequest.h; sourceTree = "<group>"; };
49626C2C139437070093534C /* ATAPIRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAPIRequest.m; sourceTree = "<group>"; };
49626C2D139437070093534C /* ATConnectionChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATConnectionChannel.h; sourceTree = "<group>"; };
49626C2E139437070093534C /* ATConnectionChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATConnectionChannel.m; sourceTree = "<group>"; };
49626C2F139437070093534C /* ATConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATConnectionManager.h; sourceTree = "<group>"; };
49626C30139437070093534C /* ATConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATConnectionManager.m; sourceTree = "<group>"; };
49626C31139437070093534C /* ATURLConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATURLConnection.h; sourceTree = "<group>"; };
49626C32139437070093534C /* ATURLConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATURLConnection.m; sourceTree = "<group>"; };
49626C33139437070093534C /* ATURLConnection_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATURLConnection_Private.h; sourceTree = "<group>"; };
49626C34139437070093534C /* ATWebClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATWebClient.h; sourceTree = "<group>"; };
49626C35139437070093534C /* ATWebClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATWebClient.m; sourceTree = "<group>"; };
49626C44139437580093534C /* NSData+ATBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ATBase64.h"; sourceTree = "<group>"; };
49626C45139437580093534C /* NSData+ATBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ATBase64.m"; sourceTree = "<group>"; };
49626C56139437690093534C /* ATUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATUtilities.h; sourceTree = "<group>"; };
49626C57139437690093534C /* ATUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATUtilities.m; sourceTree = "<group>"; };
49626C65139437DD0093534C /* ATConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect.h; path = "../apptentive-ios/ApptentiveConnect/source/ATConnect.h"; sourceTree = SOURCE_ROOT; };
49626C66139437DD0093534C /* ATConnect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATConnect.m; path = "../apptentive-ios/ApptentiveConnect/source/ATConnect.m"; sourceTree = SOURCE_ROOT; };
49626C72139439050093534C /* ATBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATBackend.h; sourceTree = "<group>"; };
49626C73139439050093534C /* ATBackend.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATBackend.m; sourceTree = "<group>"; };
49626C74139439050093534C /* ATContactStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATContactStorage.h; sourceTree = "<group>"; };
49626C75139439050093534C /* ATContactStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATContactStorage.m; sourceTree = "<group>"; };
49626C78139439050093534C /* ATFeedback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATFeedback.h; sourceTree = "<group>"; };
49626C79139439050093534C /* ATFeedback.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATFeedback.m; sourceTree = "<group>"; };
49626C8F13943C310093534C /* ATReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATReachability.h; sourceTree = "<group>"; };
49626C9013943C310093534C /* ATReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATReachability.m; sourceTree = "<group>"; };
49626C9513943C520093534C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
49626D13139444C20093534C /* ATFeedbackTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATFeedbackTask.h; sourceTree = "<group>"; };
49626D14139444C20093534C /* ATFeedbackTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATFeedbackTask.m; sourceTree = "<group>"; };
49626D15139444C20093534C /* ATTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATTask.h; sourceTree = "<group>"; };
49626D16139444C20093534C /* ATTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATTask.m; sourceTree = "<group>"; };
49626D17139444C20093534C /* ATTaskQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATTaskQueue.h; sourceTree = "<group>"; };
49626D18139444C20093534C /* ATTaskQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATTaskQueue.m; sourceTree = "<group>"; };
49626D4E1397047A0093534C /* ATFeedbackWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ATFeedbackWindow.xib; sourceTree = "<group>"; };
49626D51139704D00093534C /* ATFeedbackWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATFeedbackWindowController.h; path = source/Controllers/ATFeedbackWindowController.h; sourceTree = "<group>"; };
49626D52139704D00093534C /* ATFeedbackWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATFeedbackWindowController.m; path = source/Controllers/ATFeedbackWindowController.m; sourceTree = "<group>"; };
4964BF2C17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATStaticLibraryBootstrap.h; sourceTree = "<group>"; };
4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATStaticLibraryBootstrap.m; sourceTree = "<group>"; };
4964BF3117C5D13E000DC2E8 /* ATLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLog.h; sourceTree = "<group>"; };
4964BF3217C5D13F000DC2E8 /* ATLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATLogger.h; sourceTree = "<group>"; };
4964BF3317C5D13F000DC2E8 /* ATLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATLogger.m; sourceTree = "<group>"; };
4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATURLConnection_Private.m; sourceTree = "<group>"; };
4964BF3B17C5D2B5000DC2E8 /* ATWebClient_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATWebClient_Private.h; sourceTree = "<group>"; };
4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATWebClient_Private.m; sourceTree = "<group>"; };
4971AFF313BA871600774B70 /* ATImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATImageView.h; path = source/Misc/ATImageView.h; sourceTree = "<group>"; };
4971AFF413BA871600774B70 /* ATImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATImageView.m; path = source/Misc/ATImageView.m; sourceTree = "<group>"; };
4971B07713BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATConnect_FeedbackWindowPrivate.h; path = source/Misc/ATConnect_FeedbackWindowPrivate.h; sourceTree = "<group>"; };
4971B07813BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATConnect_FeedbackWindowPrivate.m; path = source/Misc/ATConnect_FeedbackWindowPrivate.m; sourceTree = "<group>"; };
4971B47313BFBB7C00774B70 /* at_logo_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = at_logo_info.png; path = "../apptentive-ios/ApptentiveConnect/art/generated/at_logo_info.png"; sourceTree = SOURCE_ROOT; };
4971B4C913BFBEFF00774B70 /* ATImageButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ATImageButton.h; path = source/Misc/ATImageButton.h; sourceTree = "<group>"; };
4971B4CA13BFBEFF00774B70 /* ATImageButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ATImageButton.m; path = source/Misc/ATImageButton.m; sourceTree = "<group>"; };
4972847513CA625D002AD591 /* ATAppRatingFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppRatingFlow.h; sourceTree = "<group>"; };
4972847613CA625D002AD591 /* ATAppRatingFlow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppRatingFlow.m; sourceTree = "<group>"; };
4982FE69157C0BEF00A1ED63 /* ApptentiveMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApptentiveMetrics.h; sourceTree = "<group>"; };
4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApptentiveMetrics.m; sourceTree = "<group>"; };
4982FE6B157C0BEF00A1ED63 /* ATFeedbackMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATFeedbackMetrics.h; sourceTree = "<group>"; };
4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATFeedbackMetrics.m; sourceTree = "<group>"; };
4982FE6D157C0BEF00A1ED63 /* ATMetric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATMetric.h; sourceTree = "<group>"; };
4982FE6E157C0BEF00A1ED63 /* ATMetric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATMetric.m; sourceTree = "<group>"; };
4982FE6F157C0BEF00A1ED63 /* ATSurveyMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATSurveyMetrics.h; sourceTree = "<group>"; };
4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATSurveyMetrics.m; sourceTree = "<group>"; };
4982FE72157C0BEF00A1ED63 /* ATWebClient+Metrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ATWebClient+Metrics.h"; sourceTree = "<group>"; };
4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ATWebClient+Metrics.m"; sourceTree = "<group>"; };
4982FE84157C0C2700A1ED63 /* ATAppConfigurationUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppConfigurationUpdater.h; sourceTree = "<group>"; };
4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppConfigurationUpdater.m; sourceTree = "<group>"; };
4982FE89157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppRatingFlow_Private.h; sourceTree = "<group>"; };
4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppRatingFlow_Private.m; sourceTree = "<group>"; };
4982FE8B157C0C3D00A1ED63 /* ATAppRatingMetrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATAppRatingMetrics.h; sourceTree = "<group>"; };
4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATAppRatingMetrics.m; sourceTree = "<group>"; };
4982FE93157C0C4D00A1ED63 /* ATWebClient_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATWebClient_Private.h; sourceTree = "<group>"; };
4982FE95157C0C5A00A1ED63 /* ATRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATRecord.h; sourceTree = "<group>"; };
4982FE96157C0C5A00A1ED63 /* ATRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATRecord.m; sourceTree = "<group>"; };
4982FE9A157C0C6700A1ED63 /* ATRecordTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ATRecordTask.h; sourceTree = "<group>"; };
4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ATRecordTask.m; sourceTree = "<group>"; };
4989202F13B539D6007967BA /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = resources/Info.plist; sourceTree = "<group>"; };
8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ApptentiveConnect.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9A5951EE1C1D332B009C17AA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
49626B6A13942A2B0093534C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
49626B7913942A7E0093534C /* ApptentiveConnect.framework in Frameworks */,
4989203013B539D6007967BA /* AddressBook.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8DC2EF560486A6940098B216 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9A5951EF1C1D332B009C17AA /* QuartzCore.framework in Frameworks */,
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */,
49626C9613943C520093534C /* SystemConfiguration.framework in Frameworks */,
4989204B13B53B04007967BA /* AddressBook.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
034768DFFF38A50411DB9C8B /* Products */ = {
isa = PBXGroup;
children = (
8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */,
49626B6D13942A2B0093534C /* ApptentiveUnitTests.octest */,
);
name = Products;
sourceTree = "<group>";
};
0867D691FE84028FC02AAC07 /* ApptentiveConnect */ = {
isa = PBXGroup;
children = (
9A5951EE1C1D332B009C17AA /* QuartzCore.framework */,
49626BF5139436580093534C /* ext */,
49626B7313942A4D0093534C /* source */,
49626D4B139703D40093534C /* xibs */,
49626B7413942A560093534C /* resources */,
49626B7613942A630093534C /* tests */,
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
034768DFFF38A50411DB9C8B /* Products */,
);
name = ApptentiveConnect;
sourceTree = "<group>";
};
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */,
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */,
);
name = "External Frameworks and Libraries";
sourceTree = "<group>";
};
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */,
49626C9513943C520093534C /* SystemConfiguration.framework */,
4989202F13B539D6007967BA /* AddressBook.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
0867D6A5FE840307C02AAC07 /* AppKit.framework */,
D2F7E79907B2D74100F64583 /* CoreData.framework */,
0867D69BFE84028FC02AAC07 /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
49626B7313942A4D0093534C /* source */ = {
isa = PBXGroup;
children = (
32DBCF5E0370ADEE00C91783 /* ApptentiveConnect_Prefix.pch */,
49626D51139704D00093534C /* ATFeedbackWindowController.h */,
49626D52139704D00093534C /* ATFeedbackWindowController.m */,
4971AFF313BA871600774B70 /* ATImageView.h */,
4971AFF413BA871600774B70 /* ATImageView.m */,
4971B07713BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h */,
4971B07813BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m */,
4971B4C913BFBEFF00774B70 /* ATImageButton.h */,
4971B4CA13BFBEFF00774B70 /* ATImageButton.m */,
491CA3B315F029630003BC38 /* ATPlaceholderTextView.h */,
491CA3B415F029630003BC38 /* ATPlaceholderTextView.m */,
);
name = source;
sourceTree = "<group>";
};
49626B7413942A560093534C /* resources */ = {
isa = PBXGroup;
children = (
4971B47313BFBB7C00774B70 /* at_logo_info.png */,
491CA3BA15F0663C0003BC38 /* at_logo_info@2x.png */,
8DC2EF5A0486A6940098B216 /* Info.plist */,
089C1666FE841158C02AAC07 /* InfoPlist.strings */,
);
name = resources;
sourceTree = "<group>";
};
49626B7613942A630093534C /* tests */ = {
isa = PBXGroup;
children = (
49626B6E13942A2B0093534C /* ApptentiveUnitTests-Info.plist */,
49626B7C13942A9A0093534C /* ATSampleTest.h */,
49626B7D13942A9A0093534C /* ATSampleTest.m */,
);
name = tests;
sourceTree = "<group>";
};
49626BF5139436580093534C /* ext */ = {
isa = PBXGroup;
children = (
49626BF6139436600093534C /* apptentive-ios */,
);
name = ext;
sourceTree = "<group>";
};
49626BF6139436600093534C /* apptentive-ios */ = {
isa = PBXGroup;
children = (
49626C43139437580093534C /* ext */,
49626BFB1394367B0093534C /* source */,
);
name = "apptentive-ios";
sourceTree = "<group>";
};
49626BFB1394367B0093534C /* source */ = {
isa = PBXGroup;
children = (
49626C65139437DD0093534C /* ATConnect.h */,
49626C66139437DD0093534C /* ATConnect.m */,
4982FE68157C0BEF00A1ED63 /* Metrics */,
49626C55139437690093534C /* Misc */,
4972847413CA625D002AD591 /* Rating Flow */,
49626C71139439050093534C /* Persistence */,
49626C8E13943C310093534C /* Reachability */,
49626D12139444C20093534C /* Tasks */,
49626C2A139437070093534C /* URL Loading */,
);
name = source;
sourceTree = "<group>";
};
49626C2A139437070093534C /* URL Loading */ = {
isa = PBXGroup;
children = (
4982FE93157C0C4D00A1ED63 /* ATWebClient_Private.h */,
49626C2B139437070093534C /* ATAPIRequest.h */,
49626C2C139437070093534C /* ATAPIRequest.m */,
49626C2D139437070093534C /* ATConnectionChannel.h */,
49626C2E139437070093534C /* ATConnectionChannel.m */,
49626C2F139437070093534C /* ATConnectionManager.h */,
49626C30139437070093534C /* ATConnectionManager.m */,
49626C31139437070093534C /* ATURLConnection.h */,
49626C32139437070093534C /* ATURLConnection.m */,
49626C33139437070093534C /* ATURLConnection_Private.h */,
4964BF3817C5D2A8000DC2E8 /* ATURLConnection_Private.m */,
49626C34139437070093534C /* ATWebClient.h */,
49626C35139437070093534C /* ATWebClient.m */,
4964BF3B17C5D2B5000DC2E8 /* ATWebClient_Private.h */,
4964BF3C17C5D2B5000DC2E8 /* ATWebClient_Private.m */,
);
name = "URL Loading";
path = "../apptentive-ios/ApptentiveConnect/source/URL Loading";
sourceTree = SOURCE_ROOT;
};
49626C43139437580093534C /* ext */ = {
isa = PBXGroup;
children = (
49626C44139437580093534C /* NSData+ATBase64.h */,
49626C45139437580093534C /* NSData+ATBase64.m */,
491CA38E15F019E20003BC38 /* PJSONKit.h */,
491CA38F15F019E20003BC38 /* PJSONKit.m */,
);
name = ext;
path = "../apptentive-ios/ApptentiveConnect/ext";
sourceTree = SOURCE_ROOT;
};
49626C55139437690093534C /* Misc */ = {
isa = PBXGroup;
children = (
4964BF3117C5D13E000DC2E8 /* ATLog.h */,
4964BF3217C5D13F000DC2E8 /* ATLogger.h */,
4964BF3317C5D13F000DC2E8 /* ATLogger.m */,
49626C56139437690093534C /* ATUtilities.h */,
49626C57139437690093534C /* ATUtilities.m */,
4964BF2C17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h */,
4964BF2D17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m */,
);
name = Misc;
path = "../apptentive-ios/ApptentiveConnect/source/Misc";
sourceTree = SOURCE_ROOT;
};
49626C71139439050093534C /* Persistence */ = {
isa = PBXGroup;
children = (
49626C72139439050093534C /* ATBackend.h */,
49626C73139439050093534C /* ATBackend.m */,
49626C74139439050093534C /* ATContactStorage.h */,
49626C75139439050093534C /* ATContactStorage.m */,
49626C78139439050093534C /* ATFeedback.h */,
49626C79139439050093534C /* ATFeedback.m */,
4982FE84157C0C2700A1ED63 /* ATAppConfigurationUpdater.h */,
4982FE85157C0C2700A1ED63 /* ATAppConfigurationUpdater.m */,
4982FE95157C0C5A00A1ED63 /* ATRecord.h */,
4982FE96157C0C5A00A1ED63 /* ATRecord.m */,
);
name = Persistence;
path = "../apptentive-ios/ApptentiveConnect/source/Persistence";
sourceTree = SOURCE_ROOT;
};
49626C8E13943C310093534C /* Reachability */ = {
isa = PBXGroup;
children = (
49626C8F13943C310093534C /* ATReachability.h */,
49626C9013943C310093534C /* ATReachability.m */,
);
name = Reachability;
path = "../apptentive-ios/ApptentiveConnect/source/Reachability";
sourceTree = SOURCE_ROOT;
};
49626D12139444C20093534C /* Tasks */ = {
isa = PBXGroup;
children = (
49598DBA15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h */,
49598DBB15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m */,
4982FE9A157C0C6700A1ED63 /* ATRecordTask.h */,
4982FE9B157C0C6700A1ED63 /* ATRecordTask.m */,
49626D13139444C20093534C /* ATFeedbackTask.h */,
49626D14139444C20093534C /* ATFeedbackTask.m */,
49626D15139444C20093534C /* ATTask.h */,
49626D16139444C20093534C /* ATTask.m */,
49626D17139444C20093534C /* ATTaskQueue.h */,
49626D18139444C20093534C /* ATTaskQueue.m */,
);
name = Tasks;
path = "../apptentive-ios/ApptentiveConnect/source/Tasks";
sourceTree = SOURCE_ROOT;
};
49626D4B139703D40093534C /* xibs */ = {
isa = PBXGroup;
children = (
49626D4E1397047A0093534C /* ATFeedbackWindow.xib */,
);
path = xibs;
sourceTree = "<group>";
};
4972847413CA625D002AD591 /* Rating Flow */ = {
isa = PBXGroup;
children = (
4972847513CA625D002AD591 /* ATAppRatingFlow.h */,
4972847613CA625D002AD591 /* ATAppRatingFlow.m */,
4982FE89157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h */,
4982FE8A157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m */,
4982FE8B157C0C3D00A1ED63 /* ATAppRatingMetrics.h */,
4982FE8C157C0C3D00A1ED63 /* ATAppRatingMetrics.m */,
);
name = "Rating Flow";
path = "../apptentive-ios/ApptentiveConnect/source/Rating Flow";
sourceTree = SOURCE_ROOT;
};
4982FE68157C0BEF00A1ED63 /* Metrics */ = {
isa = PBXGroup;
children = (
4982FE69157C0BEF00A1ED63 /* ApptentiveMetrics.h */,
4982FE6A157C0BEF00A1ED63 /* ApptentiveMetrics.m */,
4982FE6B157C0BEF00A1ED63 /* ATFeedbackMetrics.h */,
4982FE6C157C0BEF00A1ED63 /* ATFeedbackMetrics.m */,
4982FE6D157C0BEF00A1ED63 /* ATMetric.h */,
4982FE6E157C0BEF00A1ED63 /* ATMetric.m */,
4982FE6F157C0BEF00A1ED63 /* ATSurveyMetrics.h */,
4982FE70157C0BEF00A1ED63 /* ATSurveyMetrics.m */,
4982FE71157C0BEF00A1ED63 /* URL Loading */,
);
name = Metrics;
path = "../apptentive-ios/ApptentiveConnect/source/Metrics";
sourceTree = "<group>";
};
4982FE71157C0BEF00A1ED63 /* URL Loading */ = {
isa = PBXGroup;
children = (
4982FE72157C0BEF00A1ED63 /* ATWebClient+Metrics.h */,
4982FE73157C0BEF00A1ED63 /* ATWebClient+Metrics.m */,
);
path = "URL Loading";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8DC2EF500486A6940098B216 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
49626C36139437070093534C /* ATAPIRequest.h in Headers */,
49626C38139437070093534C /* ATConnectionChannel.h in Headers */,
49626C3A139437070093534C /* ATConnectionManager.h in Headers */,
49626C3C139437070093534C /* ATURLConnection.h in Headers */,
49626C3E139437070093534C /* ATURLConnection_Private.h in Headers */,
49626C3F139437070093534C /* ATWebClient.h in Headers */,
49626C46139437580093534C /* NSData+ATBase64.h in Headers */,
49626C58139437690093534C /* ATUtilities.h in Headers */,
49626C67139437DD0093534C /* ATConnect.h in Headers */,
49626C7A139439050093534C /* ATBackend.h in Headers */,
49626C7C139439050093534C /* ATContactStorage.h in Headers */,
49626C80139439050093534C /* ATFeedback.h in Headers */,
49626C9113943C310093534C /* ATReachability.h in Headers */,
49626D19139444C20093534C /* ATFeedbackTask.h in Headers */,
49626D1B139444C20093534C /* ATTask.h in Headers */,
49626D1D139444C20093534C /* ATTaskQueue.h in Headers */,
49626D53139704D00093534C /* ATFeedbackWindowController.h in Headers */,
4971AFF513BA871600774B70 /* ATImageView.h in Headers */,
4971B07913BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.h in Headers */,
4971B4CB13BFBEFF00774B70 /* ATImageButton.h in Headers */,
4972847713CA625D002AD591 /* ATAppRatingFlow.h in Headers */,
4982FE74157C0BEF00A1ED63 /* ApptentiveMetrics.h in Headers */,
4982FE77157C0BEF00A1ED63 /* ATFeedbackMetrics.h in Headers */,
4982FE7A157C0BEF00A1ED63 /* ATMetric.h in Headers */,
4982FE7D157C0BEF00A1ED63 /* ATSurveyMetrics.h in Headers */,
4982FE80157C0BEF00A1ED63 /* ATWebClient+Metrics.h in Headers */,
4982FE86157C0C2700A1ED63 /* ATAppConfigurationUpdater.h in Headers */,
4982FE8D157C0C3D00A1ED63 /* ATAppRatingFlow_Private.h in Headers */,
4982FE90157C0C3D00A1ED63 /* ATAppRatingMetrics.h in Headers */,
4982FE94157C0C4D00A1ED63 /* ATWebClient_Private.h in Headers */,
4982FE97157C0C5A00A1ED63 /* ATRecord.h in Headers */,
4982FE9C157C0C6700A1ED63 /* ATRecordTask.h in Headers */,
49598DBC15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.h in Headers */,
491CA39015F019E20003BC38 /* PJSONKit.h in Headers */,
491CA3B515F029630003BC38 /* ATPlaceholderTextView.h in Headers */,
4964BF2E17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.h in Headers */,
4964BF3417C5D13F000DC2E8 /* ATLog.h in Headers */,
4964BF3517C5D13F000DC2E8 /* ATLogger.h in Headers */,
4964BF3D17C5D2B5000DC2E8 /* ATWebClient_Private.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
49626B6C13942A2B0093534C /* ApptentiveUnitTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 49626B7213942A2B0093534C /* Build configuration list for PBXNativeTarget "ApptentiveUnitTests" */;
buildPhases = (
49626B6813942A2B0093534C /* Resources */,
49626B6913942A2B0093534C /* Sources */,
49626B6A13942A2B0093534C /* Frameworks */,
49626B6B13942A2B0093534C /* ShellScript */,
);
buildRules = (
);
dependencies = (
49626B7813942A760093534C /* PBXTargetDependency */,
);
name = ApptentiveUnitTests;
productName = ApptentiveUnitTests;
productReference = 49626B6D13942A2B0093534C /* ApptentiveUnitTests.octest */;
productType = "com.apple.product-type.bundle.ocunit-test";
};
8DC2EF4F0486A6940098B216 /* ApptentiveConnect */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "ApptentiveConnect" */;
buildPhases = (
4964BF4717C5D74E000DC2E8 /* Localize (Release Only) */,
8DC2EF500486A6940098B216 /* Headers */,
8DC2EF520486A6940098B216 /* Resources */,
8DC2EF540486A6940098B216 /* Sources */,
8DC2EF560486A6940098B216 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = ApptentiveConnect;
productInstallPath = "$(HOME)/Library/Frameworks";
productName = ApptentiveConnect;
productReference = 8DC2EF5B0486A6940098B216 /* ApptentiveConnect.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0420;
ORGANIZATIONNAME = "Apptentive, Inc.";
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "ApptentiveConnect" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 0867D691FE84028FC02AAC07 /* ApptentiveConnect */;
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
8DC2EF4F0486A6940098B216 /* ApptentiveConnect */,
49626B6C13942A2B0093534C /* ApptentiveUnitTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
49626B6813942A2B0093534C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8DC2EF520486A6940098B216 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */,
49626D4F1397047A0093534C /* ATFeedbackWindow.xib in Resources */,
4971B47413BFBB7C00774B70 /* at_logo_info.png in Resources */,
491CA3BB15F0663C0003BC38 /* at_logo_info@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
49626B6B13942A2B0093534C /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
};
4964BF4717C5D74E000DC2E8 /* Localize (Release Only) */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Localize (Release Only)";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "echo \"Configuration is: ${CONFIGURATION}\"\nif [ \"${CONFIGURATION}\" = 'Release' ]; then\n if [ -e \"${PROJECT_DIR}/resources/English.lproj/Localizable.strings\" ]; then\n rm \"${PROJECT_DIR}/resources/English.lproj/Localizable.strings\"\n fi\n find \"${PROJECT_DIR}/source/\" -name *.m -print0 | xargs -0 genstrings -s ATLocalizedString -o \"${PROJECT_DIR}/resources/English.lproj\"\nfi";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
49626B6913942A2B0093534C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
49626B7E13942A9A0093534C /* ATSampleTest.m in Sources */,
4982FE76157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */,
4982FE79157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */,
4982FE7C157C0BEF00A1ED63 /* ATMetric.m in Sources */,
4982FE7F157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */,
4982FE82157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */,
4982FE88157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */,
4982FE8F157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */,
4982FE92157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */,
4982FE99157C0C5A00A1ED63 /* ATRecord.m in Sources */,
4982FE9E157C0C6700A1ED63 /* ATRecordTask.m in Sources */,
49598DBE15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */,
491CA39215F019E20003BC38 /* PJSONKit.m in Sources */,
491CA3B715F029630003BC38 /* ATPlaceholderTextView.m in Sources */,
4964BF3017C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */,
4964BF3717C5D13F000DC2E8 /* ATLogger.m in Sources */,
4964BF3A17C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */,
4964BF3F17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8DC2EF540486A6940098B216 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
49626C37139437070093534C /* ATAPIRequest.m in Sources */,
49626C39139437070093534C /* ATConnectionChannel.m in Sources */,
49626C3B139437070093534C /* ATConnectionManager.m in Sources */,
49626C3D139437070093534C /* ATURLConnection.m in Sources */,
49626C40139437070093534C /* ATWebClient.m in Sources */,
49626C47139437580093534C /* NSData+ATBase64.m in Sources */,
49626C59139437690093534C /* ATUtilities.m in Sources */,
49626C68139437DD0093534C /* ATConnect.m in Sources */,
49626C7B139439050093534C /* ATBackend.m in Sources */,
49626C7D139439050093534C /* ATContactStorage.m in Sources */,
49626C81139439050093534C /* ATFeedback.m in Sources */,
49626C9213943C310093534C /* ATReachability.m in Sources */,
49626D1A139444C20093534C /* ATFeedbackTask.m in Sources */,
49626D1C139444C20093534C /* ATTask.m in Sources */,
49626D1E139444C20093534C /* ATTaskQueue.m in Sources */,
49626D54139704D00093534C /* ATFeedbackWindowController.m in Sources */,
4971AFF613BA871600774B70 /* ATImageView.m in Sources */,
4971B07A13BAB12F00774B70 /* ATConnect_FeedbackWindowPrivate.m in Sources */,
4971B4CC13BFBEFF00774B70 /* ATImageButton.m in Sources */,
4972847813CA625D002AD591 /* ATAppRatingFlow.m in Sources */,
4982FE75157C0BEF00A1ED63 /* ApptentiveMetrics.m in Sources */,
4982FE78157C0BEF00A1ED63 /* ATFeedbackMetrics.m in Sources */,
4982FE7B157C0BEF00A1ED63 /* ATMetric.m in Sources */,
4982FE7E157C0BEF00A1ED63 /* ATSurveyMetrics.m in Sources */,
4982FE81157C0BEF00A1ED63 /* ATWebClient+Metrics.m in Sources */,
4982FE87157C0C2700A1ED63 /* ATAppConfigurationUpdater.m in Sources */,
4982FE8E157C0C3D00A1ED63 /* ATAppRatingFlow_Private.m in Sources */,
4982FE91157C0C3D00A1ED63 /* ATAppRatingMetrics.m in Sources */,
4982FE98157C0C5A00A1ED63 /* ATRecord.m in Sources */,
4982FE9D157C0C6700A1ED63 /* ATRecordTask.m in Sources */,
49598DBD15C62F1B00DF4ABD /* ATAppConfigurationUpdateTask.m in Sources */,
491CA39115F019E20003BC38 /* PJSONKit.m in Sources */,
491CA3B615F029630003BC38 /* ATPlaceholderTextView.m in Sources */,
4964BF2F17C5D12B000DC2E8 /* ATStaticLibraryBootstrap.m in Sources */,
4964BF3617C5D13F000DC2E8 /* ATLogger.m in Sources */,
4964BF3917C5D2A8000DC2E8 /* ATURLConnection_Private.m in Sources */,
4964BF3E17C5D2B5000DC2E8 /* ATWebClient_Private.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
49626B7813942A760093534C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8DC2EF4F0486A6940098B216 /* ApptentiveConnect */;
targetProxy = 49626B7713942A760093534C /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C1667FE841158C02AAC07 /* InfoPlist.strings */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
1DEB91AE08733DA50010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_DYNAMIC_NO_PIC = NO;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = source/ApptentiveConnect_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
"JSONKIT_PREFIX=AT",
"APPTENTIVE_DEBUG=1",
"AT_LOGGING_LEVEL_INFO=1",
"AT_LOGGING_LEVEL_DEBUG=1",
"AT_LOGGING_LEVEL_ERROR=1",
);
INFOPLIST_FILE = resources/Info.plist;
INSTALL_PATH = "@executable_path/../Frameworks";
PRODUCT_NAME = ApptentiveConnect;
WRAPPER_EXTENSION = framework;
};
name = Debug;
};
1DEB91AF08733DA50010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = source/ApptentiveConnect_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
"JSONKIT_PREFIX=AT",
"AT_LOGGING_LEVEL_INFO=1",
"AT_LOGGING_LEVEL_ERROR=1",
);
INFOPLIST_FILE = resources/Info.plist;
INSTALL_PATH = "@executable_path/../Frameworks";
PRODUCT_NAME = ApptentiveConnect;
WRAPPER_EXTENSION = framework;
};
name = Release;
};
1DEB91B208733DA50010E9CD /* 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;
MACOSX_DEPLOYMENT_TARGET = 10.7;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
1DEB91B308733DA50010E9CD /* 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;
MACOSX_DEPLOYMENT_TARGET = 10.7;
SDKROOT = macosx;
};
name = Release;
};
49626B7013942A2B0093534C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
INFOPLIST_FILE = "tests/ApptentiveUnitTests-Info.plist";
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
OTHER_LDFLAGS = (
"-framework",
Cocoa,
"-framework",
SenTestingKit,
);
PRODUCT_NAME = ApptentiveUnitTests;
WRAPPER_EXTENSION = octest;
};
name = Debug;
};
49626B7113942A2B0093534C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
INFOPLIST_FILE = "tests/ApptentiveUnitTests-Info.plist";
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
OTHER_LDFLAGS = (
"-framework",
Cocoa,
"-framework",
SenTestingKit,
);
PRODUCT_NAME = ApptentiveUnitTests;
WRAPPER_EXTENSION = octest;
ZERO_LINK = NO;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "ApptentiveConnect" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB91AE08733DA50010E9CD /* Debug */,
1DEB91AF08733DA50010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "ApptentiveConnect" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB91B208733DA50010E9CD /* Debug */,
1DEB91B308733DA50010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
49626B7213942A2B0093534C /* Build configuration list for PBXNativeTarget "ApptentiveUnitTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
49626B7013942A2B0093534C /* Debug */,
49626B7113942A2B0093534C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
}

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

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

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

Binary file not shown.

80
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/ApptentiveConnect.xcscheme

@ -0,0 +1,80 @@
<?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 = "8DC2EF4F0486A6940098B216"
BuildableName = "ApptentiveConnect.framework"
BlueprintName = "ApptentiveConnect"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<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">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8DC2EF4F0486A6940098B216"
BuildableName = "ApptentiveConnect.framework"
BlueprintName = "ApptentiveConnect"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8DC2EF4F0486A6940098B216"
BuildableName = "ApptentiveConnect.framework"
BlueprintName = "ApptentiveConnect"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

80
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/ApptentiveUnitTests.xcscheme

@ -0,0 +1,80 @@
<?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 = "49626B6C13942A2B0093534C"
BuildableName = "ApptentiveUnitTests.octest"
BlueprintName = "ApptentiveUnitTests"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<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">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "49626B6C13942A2B0093534C"
BuildableName = "ApptentiveUnitTests.octest"
BlueprintName = "ApptentiveUnitTests"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "49626B6C13942A2B0093534C"
BuildableName = "ApptentiveUnitTests.octest"
BlueprintName = "ApptentiveUnitTests"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

32
Clocker/ApptentiveConnect/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/xcschememanagement.plist

@ -0,0 +1,32 @@
<?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>ApptentiveConnect.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>ApptentiveUnitTests.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>49626B6C13942A2B0093534C</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8DC2EF4F0486A6940098B216</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

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

@ -0,0 +1,2 @@
/* 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

@ -0,0 +1,28 @@
<?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

@ -0,0 +1,7 @@
//
// 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

@ -0,0 +1,36 @@
//
// 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

@ -0,0 +1,378 @@
//
// 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 (int 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 (int 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

@ -0,0 +1,15 @@
//
// 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

@ -0,0 +1,19 @@
//
// 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

@ -0,0 +1,16 @@
//
// 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

@ -0,0 +1,18 @@
//
// 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

@ -0,0 +1,17 @@
//
// 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

@ -0,0 +1,27 @@
//
// 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

@ -0,0 +1,17 @@
//
// 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

@ -0,0 +1,65 @@
//
// 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

@ -0,0 +1,17 @@
//
// 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

@ -0,0 +1,17 @@
//
// 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

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>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

@ -0,0 +1,249 @@
<?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"/>
<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

@ -0,0 +1,34 @@
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

@ -0,0 +1,9 @@
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

@ -0,0 +1,2 @@
/* 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

@ -0,0 +1,32 @@
<?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

@ -0,0 +1,416 @@
// !$*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

@ -0,0 +1,7 @@
<?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

@ -0,0 +1,91 @@
<?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

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>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

@ -0,0 +1,22 @@
//
// 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

@ -0,0 +1,39 @@
//
// 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

@ -0,0 +1,7 @@
//
// 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

@ -0,0 +1,11 @@
/*
* 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

@ -0,0 +1,14 @@
//
// 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

@ -0,0 +1,24 @@
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

@ -0,0 +1,125 @@
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.

21
Clocker/ApptentiveConnect/apptentive-ios/.gitignore vendored

@ -0,0 +1,21 @@
# xcode noise
build/
build/*
*/build/*
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
xcuserdata/*
xcuserdata/
# OSX noise
.DS_Store
profile
Icon*
# Emacs noise
*~
# other noise
.svn

1328
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.pbxproj

File diff suppressed because it is too large Load Diff

7
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/project.xcworkspace/contents.xcworkspacedata generated

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

73
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcshareddata/xcschemes/ApptentiveConnect.xcscheme

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0460"
version = "1.8">
<BuildAction
parallelizeBuildables = "NO"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "496DC37E1333D35600743F65"
BuildableName = "libApptentiveConnect.a"
BlueprintName = "ApptentiveConnect"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "496DC38B1333D35600743F65"
BuildableName = "ApptentiveConnectTests.octest"
BlueprintName = "ApptentiveConnectTests"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
displayScaleIsEnabled = "NO"
displayScale = "1.00"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
displayScaleIsEnabled = "NO"
displayScale = "1.00"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

63
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/ApptentiveConnect.xcodeproj/xcshareddata/xcschemes/ApptentiveResources.xcscheme

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0460"
version = "1.8">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "49D1118B13341A7C00603373"
BuildableName = "ApptentiveResources.bundle"
BlueprintName = "ApptentiveResources"
ReferencedContainer = "container:ApptentiveConnect.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
displayScaleIsEnabled = "NO"
displayScale = "1.00"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
displayScaleIsEnabled = "NO"
displayScale = "1.00"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/Checkmark.opacity

Binary file not shown.

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/button_shadow_overlay.psd

Binary file not shown.

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/button_shadow_overlay@2x.psd

Binary file not shown.

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/camera icon button

Binary file not shown.

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/camera icon.opacity

Binary file not shown.

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/camera icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/cancel_bg.psd

Binary file not shown.

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_apptentive_icon_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_apptentive_icon_small@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_button_shadow_overlay.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_button_shadow_overlay@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_bg@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_highlighted_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_cancel_highlighted_bg@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_checkmark.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_checkmark@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dialog_paper_bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dialog_paper_bg@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dotted_red_line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 B

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_dotted_red_line@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Clocker/ApptentiveConnect/apptentive-ios/ApptentiveConnect/art/generated/at_gray_line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 B

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

Loading…
Cancel
Save