diff --git a/Conquer.xcodeproj/project.pbxproj b/Conquer.xcodeproj/project.pbxproj index dc2d79a..762b3f2 100755 --- a/Conquer.xcodeproj/project.pbxproj +++ b/Conquer.xcodeproj/project.pbxproj @@ -20,6 +20,83 @@ AA3B037D154F5C940000D6A7 /* ComputerPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3B037C154F5C940000D6A7 /* ComputerPlayer.m */; }; AA3B0380154F5DA30000D6A7 /* GameLostScene.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3B037F154F5DA30000D6A7 /* GameLostScene.m */; }; AA3B0383154F60020000D6A7 /* EasyComputerPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3B0382154F60020000D6A7 /* EasyComputerPlayer.m */; }; + AA6C7C301550AE4900600DAA /* libGoogleAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA6C7C2E1550AE4900600DAA /* libGoogleAnalytics.a */; }; + AA6C7C9D1550AE5000600DAA /* libCrittercism_v3_1_5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA6C7C371550AE5000600DAA /* libCrittercism_v3_1_5.a */; }; + AA6C7C9E1550AE5000600DAA /* crittercism-arrow-l.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C531550AE5000600DAA /* crittercism-arrow-l.png */; }; + AA6C7C9F1550AE5000600DAA /* crittercism-arrow-l@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C541550AE5000600DAA /* crittercism-arrow-l@2x.png */; }; + AA6C7CA01550AE5000600DAA /* crittercism-arrow-left-gray-border.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C551550AE5000600DAA /* crittercism-arrow-left-gray-border.png */; }; + AA6C7CA11550AE5000600DAA /* crittercism-arrow-left-no-border.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C561550AE5000600DAA /* crittercism-arrow-left-no-border.png */; }; + AA6C7CA21550AE5000600DAA /* crittercism-arrow-left.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C571550AE5000600DAA /* crittercism-arrow-left.png */; }; + AA6C7CA31550AE5000600DAA /* crittercism-arrow-let-no-border.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C581550AE5000600DAA /* crittercism-arrow-let-no-border.png */; }; + AA6C7CA41550AE5000600DAA /* crittercism-arrow-r.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C591550AE5000600DAA /* crittercism-arrow-r.png */; }; + AA6C7CA51550AE5000600DAA /* crittercism-arrow-r@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C5A1550AE5000600DAA /* crittercism-arrow-r@2x.png */; }; + AA6C7CA61550AE5000600DAA /* crittercism-arrow-right-green-border.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C5B1550AE5000600DAA /* crittercism-arrow-right-green-border.png */; }; + AA6C7CA71550AE5000600DAA /* crittercism-arrow-right-no-border.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C5C1550AE5000600DAA /* crittercism-arrow-right-no-border.png */; }; + AA6C7CA81550AE5000600DAA /* crittercism-avatar-default.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C5D1550AE5000600DAA /* crittercism-avatar-default.png */; }; + AA6C7CA91550AE5000600DAA /* crittercism-avatar-us.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C5E1550AE5000600DAA /* crittercism-avatar-us.png */; }; + AA6C7CAA1550AE5000600DAA /* crittercism-bg-00.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C5F1550AE5000600DAA /* crittercism-bg-00.png */; }; + AA6C7CAB1550AE5000600DAA /* crittercism-bg-categorize-as.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C601550AE5000600DAA /* crittercism-bg-categorize-as.png */; }; + AA6C7CAC1550AE5000600DAA /* crittercism-bg-edit-form.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C611550AE5000600DAA /* crittercism-bg-edit-form.png */; }; + AA6C7CAD1550AE5000600DAA /* crittercism-bg-edit-form@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C621550AE5000600DAA /* crittercism-bg-edit-form@2x~iphone.png */; }; + AA6C7CAE1550AE5000600DAA /* crittercism-bg-inactive-overlay.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C631550AE5000600DAA /* crittercism-bg-inactive-overlay.png */; }; + AA6C7CAF1550AE5000600DAA /* crittercism-bg-reply-to.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C641550AE5000600DAA /* crittercism-bg-reply-to.png */; }; + AA6C7CB01550AE5000600DAA /* crittercism-btn-add-comment-sel.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C651550AE5000600DAA /* crittercism-btn-add-comment-sel.png */; }; + AA6C7CB11550AE5000600DAA /* crittercism-btn-add-comment.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C661550AE5000600DAA /* crittercism-btn-add-comment.png */; }; + AA6C7CB21550AE5000600DAA /* crittercism-btn-cancel.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C671550AE5000600DAA /* crittercism-btn-cancel.png */; }; + AA6C7CB31550AE5000600DAA /* crittercism-btn-close.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C681550AE5000600DAA /* crittercism-btn-close.png */; }; + AA6C7CB41550AE5000600DAA /* crittercism-btn-submit.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C691550AE5000600DAA /* crittercism-btn-submit.png */; }; + AA6C7CB51550AE5000600DAA /* crittercism-btn-thumbs-dn-default.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C6A1550AE5000600DAA /* crittercism-btn-thumbs-dn-default.png */; }; + AA6C7CB61550AE5000600DAA /* crittercism-btn-thumbs-dn-voted.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C6B1550AE5000600DAA /* crittercism-btn-thumbs-dn-voted.png */; }; + AA6C7CB71550AE5000600DAA /* crittercism-btn-thumbs-up-default.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C6C1550AE5000600DAA /* crittercism-btn-thumbs-up-default.png */; }; + AA6C7CB81550AE5000600DAA /* crittercism-btn-thumbs-up-pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C6D1550AE5000600DAA /* crittercism-btn-thumbs-up-pressed.png */; }; + AA6C7CB91550AE5000600DAA /* crittercism-btn-thumbs-up-pressed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C6E1550AE5000600DAA /* crittercism-btn-thumbs-up-pressed@2x.png */; }; + AA6C7CBA1550AE5000600DAA /* crittercism-btn-thumbs-up-voted.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C6F1550AE5000600DAA /* crittercism-btn-thumbs-up-voted.png */; }; + AA6C7CBB1550AE5000600DAA /* crittercism-btn-thumbs-up.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C701550AE5000600DAA /* crittercism-btn-thumbs-up.png */; }; + AA6C7CBC1550AE5000600DAA /* crittercism-btn-thumbs-up@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C711550AE5000600DAA /* crittercism-btn-thumbs-up@2x.png */; }; + AA6C7CBD1550AE5000600DAA /* crittercism-bug.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C721550AE5000600DAA /* crittercism-bug.png */; }; + AA6C7CBE1550AE5000600DAA /* crittercism-checkbox-checked.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C731550AE5000600DAA /* crittercism-checkbox-checked.png */; }; + AA6C7CBF1550AE5000600DAA /* crittercism-checkbox-unchecked.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C741550AE5000600DAA /* crittercism-checkbox-unchecked.png */; }; + AA6C7CC01550AE5000600DAA /* crittercism-dev-profile-halfsize.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C751550AE5000600DAA /* crittercism-dev-profile-halfsize.png */; }; + AA6C7CC11550AE5000600DAA /* crittercism-dev-profile-halfsize@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C761550AE5000600DAA /* crittercism-dev-profile-halfsize@2x.png */; }; + AA6C7CC21550AE5000600DAA /* crittercism-feedback-forum-bg-gradient.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C771550AE5000600DAA /* crittercism-feedback-forum-bg-gradient.png */; }; + AA6C7CC31550AE5000600DAA /* crittercism-gray.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C781550AE5000600DAA /* crittercism-gray.png */; }; + AA6C7CC41550AE5000600DAA /* crittercism-green.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C791550AE5000600DAA /* crittercism-green.png */; }; + AA6C7CC51550AE5000600DAA /* crittercism-hamster-ftw.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C7A1550AE5000600DAA /* crittercism-hamster-ftw.png */; }; + AA6C7CC61550AE5000600DAA /* crittercism-hamster-twitter.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C7B1550AE5000600DAA /* crittercism-hamster-twitter.png */; }; + AA6C7CC71550AE5000600DAA /* crittercism-hamster.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C7C1550AE5000600DAA /* crittercism-hamster.png */; }; + AA6C7CC81550AE5000600DAA /* crittercism-icon-cat-idea.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C7D1550AE5000600DAA /* crittercism-icon-cat-idea.png */; }; + AA6C7CC91550AE5000600DAA /* crittercism-icon-cat-idea@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C7E1550AE5000600DAA /* crittercism-icon-cat-idea@2x.png */; }; + AA6C7CCA1550AE5000600DAA /* crittercism-icon-cat-love.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C7F1550AE5000600DAA /* crittercism-icon-cat-love.png */; }; + AA6C7CCB1550AE5000600DAA /* crittercism-icon-cat-love@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C801550AE5000600DAA /* crittercism-icon-cat-love@2x.png */; }; + AA6C7CCC1550AE5000600DAA /* crittercism-icon-cat-problem.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C811550AE5000600DAA /* crittercism-icon-cat-problem.png */; }; + AA6C7CCD1550AE5000600DAA /* crittercism-icon-cat-problem@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C821550AE5000600DAA /* crittercism-icon-cat-problem@2x.png */; }; + AA6C7CCE1550AE5000600DAA /* crittercism-icon-cat-question.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C831550AE5000600DAA /* crittercism-icon-cat-question.png */; }; + AA6C7CCF1550AE5000600DAA /* crittercism-icon-cat-question@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C841550AE5000600DAA /* crittercism-icon-cat-question@2x.png */; }; + AA6C7CD01550AE5000600DAA /* crittercism-icon-tab-01.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C851550AE5000600DAA /* crittercism-icon-tab-01.png */; }; + AA6C7CD11550AE5000600DAA /* crittercism-idea.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C861550AE5000600DAA /* crittercism-idea.png */; }; + AA6C7CD21550AE5000600DAA /* crittercism-love.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C871550AE5000600DAA /* crittercism-love.png */; }; + AA6C7CD31550AE5000600DAA /* crittercism-other.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C881550AE5000600DAA /* crittercism-other.png */; }; + AA6C7CD41550AE5000600DAA /* crittercism-question.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C891550AE5000600DAA /* crittercism-question.png */; }; + AA6C7CD51550AE5000600DAA /* crittercism-tab-icon@1x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C8A1550AE5000600DAA /* crittercism-tab-icon@1x~iphone.png */; }; + AA6C7CD61550AE5000600DAA /* crittercism-tab-icon@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C8B1550AE5000600DAA /* crittercism-tab-icon@2x~ipad.png */; }; + AA6C7CD71550AE5000600DAA /* crittercism-title-bar.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C8C1550AE5000600DAA /* crittercism-title-bar.png */; }; + AA6C7CD81550AE5000600DAA /* crittercism-user-arrow-l.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C8D1550AE5000600DAA /* crittercism-user-arrow-l.png */; }; + AA6C7CD91550AE5000600DAA /* crittercism-user-arrow-l@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C8E1550AE5000600DAA /* crittercism-user-arrow-l@2x.png */; }; + AA6C7CDA1550AE5000600DAA /* crittercism-user-profile-halfsize.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C8F1550AE5000600DAA /* crittercism-user-profile-halfsize.png */; }; + AA6C7CDB1550AE5000600DAA /* crittercism-user-profile.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C901550AE5000600DAA /* crittercism-user-profile.png */; }; + AA6C7CDC1550AE5000600DAA /* crittercism-user-profile@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C911550AE5000600DAA /* crittercism-user-profile@2x.png */; }; + AA6C7CDD1550AE5000600DAA /* crittercism-votesLeftButton.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C921550AE5000600DAA /* crittercism-votesLeftButton.png */; }; + AA6C7CDE1550AE5000600DAA /* crittercism_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C931550AE5000600DAA /* crittercism_icon.png */; }; + AA6C7CDF1550AE5000600DAA /* CrittercismAboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C951550AE5000600DAA /* CrittercismAboutViewController.xib */; }; + AA6C7CE01550AE5000600DAA /* CrittercismAddCommentViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C961550AE5000600DAA /* CrittercismAddCommentViewController.xib */; }; + AA6C7CE11550AE5000600DAA /* CrittercismAddViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C971550AE5000600DAA /* CrittercismAddViewController.xib */; }; + AA6C7CE21550AE5000600DAA /* CrittercismCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C981550AE5000600DAA /* CrittercismCell.xib */; }; + AA6C7CE31550AE5000600DAA /* CrittercismDescriptionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C991550AE5000600DAA /* CrittercismDescriptionViewController.xib */; }; + AA6C7CE41550AE5000600DAA /* CrittercismGridViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C9A1550AE5000600DAA /* CrittercismGridViewController.xib */; }; + AA6C7CE51550AE5000600DAA /* CrittercismRootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C9B1550AE5000600DAA /* CrittercismRootViewController.xib */; }; + AA6C7CE61550AE5000600DAA /* CrittercismViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA6C7C9C1550AE5000600DAA /* CrittercismViewController.xib */; }; + AA6C7CEC1550B0AF00600DAA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA6C7CEB1550B0AF00600DAA /* CFNetwork.framework */; }; + AA6C7CEE1550B0B400600DAA /* libsqlite3.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = AA6C7CED1550B0B400600DAA /* libsqlite3.0.dylib */; }; AAB64760154DE34500E1BCD5 /* CGImageInspection.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB6475F154DE34500E1BCD5 /* CGImageInspection.m */; }; AAB647A6154E202900E1BCD5 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB6478F154E202900E1BCD5 /* CDataScanner.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; AAB647A7154E202900E1BCD5 /* CFilteringJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = AAB64792154E202900E1BCD5 /* CFilteringJSONSerializer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -97,6 +174,114 @@ AA3B037F154F5DA30000D6A7 /* GameLostScene.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameLostScene.m; sourceTree = ""; }; AA3B0381154F60020000D6A7 /* EasyComputerPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EasyComputerPlayer.h; sourceTree = ""; }; AA3B0382154F60020000D6A7 /* EasyComputerPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EasyComputerPlayer.m; sourceTree = ""; }; + AA6C7C2D1550AE4900600DAA /* GANTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GANTracker.h; sourceTree = ""; }; + AA6C7C2E1550AE4900600DAA /* libGoogleAnalytics.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAnalytics.a; sourceTree = ""; }; + AA6C7C331550AE5000600DAA /* CrashReporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrashReporter.h; sourceTree = ""; }; + AA6C7C341550AE5000600DAA /* Crittercism.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Crittercism.h; sourceTree = ""; }; + AA6C7C351550AE5000600DAA /* CrittercismJSONKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrittercismJSONKit.h; sourceTree = ""; }; + AA6C7C361550AE5000600DAA /* CrittercismReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrittercismReachability.h; sourceTree = ""; }; + AA6C7C371550AE5000600DAA /* libCrittercism_v3_1_5.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libCrittercism_v3_1_5.a; sourceTree = ""; }; + AA6C7C381550AE5000600DAA /* PLCrashAsync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashAsync.h; sourceTree = ""; }; + AA6C7C391550AE5000600DAA /* PLCrashAsyncImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashAsyncImage.h; sourceTree = ""; }; + AA6C7C3A1550AE5000600DAA /* PLCrashAsyncSignalInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashAsyncSignalInfo.h; sourceTree = ""; }; + AA6C7C3B1550AE5000600DAA /* PLCrashFrameWalker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashFrameWalker.h; sourceTree = ""; }; + AA6C7C3C1550AE5000600DAA /* PLCrashFrameWalker_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashFrameWalker_arm.h; sourceTree = ""; }; + AA6C7C3D1550AE5000600DAA /* PLCrashFrameWalker_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashFrameWalker_i386.h; sourceTree = ""; }; + AA6C7C3E1550AE5000600DAA /* PLCrashFrameWalker_ppc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashFrameWalker_ppc.h; sourceTree = ""; }; + AA6C7C3F1550AE5000600DAA /* PLCrashFrameWalker_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashFrameWalker_x86_64.h; sourceTree = ""; }; + AA6C7C401550AE5000600DAA /* PLCrashLogWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashLogWriter.h; sourceTree = ""; }; + AA6C7C411550AE5000600DAA /* PLCrashLogWriterEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashLogWriterEncoding.h; sourceTree = ""; }; + AA6C7C421550AE5000600DAA /* PLCrashReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReport.h; sourceTree = ""; }; + AA6C7C431550AE5000600DAA /* PLCrashReportApplicationInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportApplicationInfo.h; sourceTree = ""; }; + AA6C7C441550AE5000600DAA /* PLCrashReportBinaryImageInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportBinaryImageInfo.h; sourceTree = ""; }; + AA6C7C451550AE5000600DAA /* PLCrashReporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReporter.h; sourceTree = ""; }; + AA6C7C461550AE5000600DAA /* PLCrashReportExceptionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportExceptionInfo.h; sourceTree = ""; }; + AA6C7C471550AE5000600DAA /* PLCrashReportFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportFormatter.h; sourceTree = ""; }; + AA6C7C481550AE5000600DAA /* PLCrashReportMachineInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportMachineInfo.h; sourceTree = ""; }; + AA6C7C491550AE5000600DAA /* PLCrashReportProcessInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportProcessInfo.h; sourceTree = ""; }; + AA6C7C4A1550AE5000600DAA /* PLCrashReportProcessorInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportProcessorInfo.h; sourceTree = ""; }; + AA6C7C4B1550AE5000600DAA /* PLCrashReportSignalInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportSignalInfo.h; sourceTree = ""; }; + AA6C7C4C1550AE5000600DAA /* PLCrashReportSystemInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportSystemInfo.h; sourceTree = ""; }; + AA6C7C4D1550AE5000600DAA /* PLCrashReportTextFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportTextFormatter.h; sourceTree = ""; }; + AA6C7C4E1550AE5000600DAA /* PLCrashReportThreadInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashReportThreadInfo.h; sourceTree = ""; }; + AA6C7C4F1550AE5000600DAA /* PLCrashSignalHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashSignalHandler.h; sourceTree = ""; }; + AA6C7C501550AE5000600DAA /* PLCrashSysctl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLCrashSysctl.h; sourceTree = ""; }; + AA6C7C531550AE5000600DAA /* crittercism-arrow-l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-l.png"; sourceTree = ""; }; + AA6C7C541550AE5000600DAA /* crittercism-arrow-l@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-l@2x.png"; sourceTree = ""; }; + AA6C7C551550AE5000600DAA /* crittercism-arrow-left-gray-border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-left-gray-border.png"; sourceTree = ""; }; + AA6C7C561550AE5000600DAA /* crittercism-arrow-left-no-border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-left-no-border.png"; sourceTree = ""; }; + AA6C7C571550AE5000600DAA /* crittercism-arrow-left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-left.png"; sourceTree = ""; }; + AA6C7C581550AE5000600DAA /* crittercism-arrow-let-no-border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-let-no-border.png"; sourceTree = ""; }; + AA6C7C591550AE5000600DAA /* crittercism-arrow-r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-r.png"; sourceTree = ""; }; + AA6C7C5A1550AE5000600DAA /* crittercism-arrow-r@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-r@2x.png"; sourceTree = ""; }; + AA6C7C5B1550AE5000600DAA /* crittercism-arrow-right-green-border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-right-green-border.png"; sourceTree = ""; }; + AA6C7C5C1550AE5000600DAA /* crittercism-arrow-right-no-border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-arrow-right-no-border.png"; sourceTree = ""; }; + AA6C7C5D1550AE5000600DAA /* crittercism-avatar-default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-avatar-default.png"; sourceTree = ""; }; + AA6C7C5E1550AE5000600DAA /* crittercism-avatar-us.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-avatar-us.png"; sourceTree = ""; }; + AA6C7C5F1550AE5000600DAA /* crittercism-bg-00.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bg-00.png"; sourceTree = ""; }; + AA6C7C601550AE5000600DAA /* crittercism-bg-categorize-as.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bg-categorize-as.png"; sourceTree = ""; }; + AA6C7C611550AE5000600DAA /* crittercism-bg-edit-form.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bg-edit-form.png"; sourceTree = ""; }; + AA6C7C621550AE5000600DAA /* crittercism-bg-edit-form@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bg-edit-form@2x~iphone.png"; sourceTree = ""; }; + AA6C7C631550AE5000600DAA /* crittercism-bg-inactive-overlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bg-inactive-overlay.png"; sourceTree = ""; }; + AA6C7C641550AE5000600DAA /* crittercism-bg-reply-to.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bg-reply-to.png"; sourceTree = ""; }; + AA6C7C651550AE5000600DAA /* crittercism-btn-add-comment-sel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-add-comment-sel.png"; sourceTree = ""; }; + AA6C7C661550AE5000600DAA /* crittercism-btn-add-comment.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-add-comment.png"; sourceTree = ""; }; + AA6C7C671550AE5000600DAA /* crittercism-btn-cancel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-cancel.png"; sourceTree = ""; }; + AA6C7C681550AE5000600DAA /* crittercism-btn-close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-close.png"; sourceTree = ""; }; + AA6C7C691550AE5000600DAA /* crittercism-btn-submit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-submit.png"; sourceTree = ""; }; + AA6C7C6A1550AE5000600DAA /* crittercism-btn-thumbs-dn-default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-dn-default.png"; sourceTree = ""; }; + AA6C7C6B1550AE5000600DAA /* crittercism-btn-thumbs-dn-voted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-dn-voted.png"; sourceTree = ""; }; + AA6C7C6C1550AE5000600DAA /* crittercism-btn-thumbs-up-default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-up-default.png"; sourceTree = ""; }; + AA6C7C6D1550AE5000600DAA /* crittercism-btn-thumbs-up-pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-up-pressed.png"; sourceTree = ""; }; + AA6C7C6E1550AE5000600DAA /* crittercism-btn-thumbs-up-pressed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-up-pressed@2x.png"; sourceTree = ""; }; + AA6C7C6F1550AE5000600DAA /* crittercism-btn-thumbs-up-voted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-up-voted.png"; sourceTree = ""; }; + AA6C7C701550AE5000600DAA /* crittercism-btn-thumbs-up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-up.png"; sourceTree = ""; }; + AA6C7C711550AE5000600DAA /* crittercism-btn-thumbs-up@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-btn-thumbs-up@2x.png"; sourceTree = ""; }; + AA6C7C721550AE5000600DAA /* crittercism-bug.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-bug.png"; sourceTree = ""; }; + AA6C7C731550AE5000600DAA /* crittercism-checkbox-checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-checkbox-checked.png"; sourceTree = ""; }; + AA6C7C741550AE5000600DAA /* crittercism-checkbox-unchecked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-checkbox-unchecked.png"; sourceTree = ""; }; + AA6C7C751550AE5000600DAA /* crittercism-dev-profile-halfsize.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-dev-profile-halfsize.png"; sourceTree = ""; }; + AA6C7C761550AE5000600DAA /* crittercism-dev-profile-halfsize@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-dev-profile-halfsize@2x.png"; sourceTree = ""; }; + AA6C7C771550AE5000600DAA /* crittercism-feedback-forum-bg-gradient.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-feedback-forum-bg-gradient.png"; sourceTree = ""; }; + AA6C7C781550AE5000600DAA /* crittercism-gray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-gray.png"; sourceTree = ""; }; + AA6C7C791550AE5000600DAA /* crittercism-green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-green.png"; sourceTree = ""; }; + AA6C7C7A1550AE5000600DAA /* crittercism-hamster-ftw.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-hamster-ftw.png"; sourceTree = ""; }; + AA6C7C7B1550AE5000600DAA /* crittercism-hamster-twitter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-hamster-twitter.png"; sourceTree = ""; }; + AA6C7C7C1550AE5000600DAA /* crittercism-hamster.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-hamster.png"; sourceTree = ""; }; + AA6C7C7D1550AE5000600DAA /* crittercism-icon-cat-idea.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-idea.png"; sourceTree = ""; }; + AA6C7C7E1550AE5000600DAA /* crittercism-icon-cat-idea@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-idea@2x.png"; sourceTree = ""; }; + AA6C7C7F1550AE5000600DAA /* crittercism-icon-cat-love.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-love.png"; sourceTree = ""; }; + AA6C7C801550AE5000600DAA /* crittercism-icon-cat-love@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-love@2x.png"; sourceTree = ""; }; + AA6C7C811550AE5000600DAA /* crittercism-icon-cat-problem.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-problem.png"; sourceTree = ""; }; + AA6C7C821550AE5000600DAA /* crittercism-icon-cat-problem@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-problem@2x.png"; sourceTree = ""; }; + AA6C7C831550AE5000600DAA /* crittercism-icon-cat-question.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-question.png"; sourceTree = ""; }; + AA6C7C841550AE5000600DAA /* crittercism-icon-cat-question@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-cat-question@2x.png"; sourceTree = ""; }; + AA6C7C851550AE5000600DAA /* crittercism-icon-tab-01.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-icon-tab-01.png"; sourceTree = ""; }; + AA6C7C861550AE5000600DAA /* crittercism-idea.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-idea.png"; sourceTree = ""; }; + AA6C7C871550AE5000600DAA /* crittercism-love.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-love.png"; sourceTree = ""; }; + AA6C7C881550AE5000600DAA /* crittercism-other.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-other.png"; sourceTree = ""; }; + AA6C7C891550AE5000600DAA /* crittercism-question.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-question.png"; sourceTree = ""; }; + AA6C7C8A1550AE5000600DAA /* crittercism-tab-icon@1x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-tab-icon@1x~iphone.png"; sourceTree = ""; }; + AA6C7C8B1550AE5000600DAA /* crittercism-tab-icon@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-tab-icon@2x~ipad.png"; sourceTree = ""; }; + AA6C7C8C1550AE5000600DAA /* crittercism-title-bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-title-bar.png"; sourceTree = ""; }; + AA6C7C8D1550AE5000600DAA /* crittercism-user-arrow-l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-user-arrow-l.png"; sourceTree = ""; }; + AA6C7C8E1550AE5000600DAA /* crittercism-user-arrow-l@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-user-arrow-l@2x.png"; sourceTree = ""; }; + AA6C7C8F1550AE5000600DAA /* crittercism-user-profile-halfsize.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-user-profile-halfsize.png"; sourceTree = ""; }; + AA6C7C901550AE5000600DAA /* crittercism-user-profile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-user-profile.png"; sourceTree = ""; }; + AA6C7C911550AE5000600DAA /* crittercism-user-profile@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-user-profile@2x.png"; sourceTree = ""; }; + AA6C7C921550AE5000600DAA /* crittercism-votesLeftButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "crittercism-votesLeftButton.png"; sourceTree = ""; }; + AA6C7C931550AE5000600DAA /* crittercism_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crittercism_icon.png; sourceTree = ""; }; + AA6C7C951550AE5000600DAA /* CrittercismAboutViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismAboutViewController.xib; sourceTree = ""; }; + AA6C7C961550AE5000600DAA /* CrittercismAddCommentViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismAddCommentViewController.xib; sourceTree = ""; }; + AA6C7C971550AE5000600DAA /* CrittercismAddViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismAddViewController.xib; sourceTree = ""; }; + AA6C7C981550AE5000600DAA /* CrittercismCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismCell.xib; sourceTree = ""; }; + AA6C7C991550AE5000600DAA /* CrittercismDescriptionViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismDescriptionViewController.xib; sourceTree = ""; }; + AA6C7C9A1550AE5000600DAA /* CrittercismGridViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismGridViewController.xib; sourceTree = ""; }; + AA6C7C9B1550AE5000600DAA /* CrittercismRootViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismRootViewController.xib; sourceTree = ""; }; + AA6C7C9C1550AE5000600DAA /* CrittercismViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrittercismViewController.xib; sourceTree = ""; }; + AA6C7CEB1550B0AF00600DAA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + AA6C7CED1550B0B400600DAA /* libsqlite3.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.0.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/libsqlite3.0.dylib; sourceTree = DEVELOPER_DIR; }; + AA6C7CF01550B45300600DAA /* GAWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAWrapper.h; path = "Projectfiles/lib/Google Analytics SDK/GAWrapper.h"; sourceTree = SOURCE_ROOT; }; AAB6475C154C81C800E1BCD5 /* Constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = ""; }; AAB6475E154DE34500E1BCD5 /* CGImageInspection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGImageInspection.h; sourceTree = ""; }; AAB6475F154DE34500E1BCD5 /* CGImageInspection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CGImageInspection.m; sourceTree = ""; }; @@ -183,6 +368,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + AA6C7CEE1550B0B400600DAA /* libsqlite3.0.dylib in Frameworks */, + AA6C7CEC1550B0AF00600DAA /* CFNetwork.framework in Frameworks */, DC65615C13A969B600A7AC53 /* libbox2d-ios.a in Frameworks */, DC65615D13A969B600A7AC53 /* libchipmunk-ios.a in Frameworks */, DC65615E13A969B600A7AC53 /* libchipmunk-spacemanager-ios.a in Frameworks */, @@ -193,6 +380,8 @@ DC65616413A969B600A7AC53 /* libkobold2d-ios.a in Frameworks */, DC65616513A969B600A7AC53 /* libobjectal-ios.a in Frameworks */, DC65616613A969B600A7AC53 /* libsneakyinput-ios.a in Frameworks */, + AA6C7C301550AE4900600DAA /* libGoogleAnalytics.a in Frameworks */, + AA6C7C9D1550AE5000600DAA /* libCrittercism_v3_1_5.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -258,9 +447,157 @@ name = GameModels; sourceTree = ""; }; + AA6C7C2C1550AE4900600DAA /* GoogleAnalyticsSDK */ = { + isa = PBXGroup; + children = ( + AA6C7CF01550B45300600DAA /* GAWrapper.h */, + AA6C7C2D1550AE4900600DAA /* GANTracker.h */, + AA6C7C2E1550AE4900600DAA /* libGoogleAnalytics.a */, + ); + name = GoogleAnalyticsSDK; + path = "lib/Google Analytics SDK/Library"; + sourceTree = ""; + }; + AA6C7C321550AE5000600DAA /* CrittercismSDK */ = { + isa = PBXGroup; + children = ( + AA6C7C331550AE5000600DAA /* CrashReporter.h */, + AA6C7C341550AE5000600DAA /* Crittercism.h */, + AA6C7C351550AE5000600DAA /* CrittercismJSONKit.h */, + AA6C7C361550AE5000600DAA /* CrittercismReachability.h */, + AA6C7C371550AE5000600DAA /* libCrittercism_v3_1_5.a */, + AA6C7C381550AE5000600DAA /* PLCrashAsync.h */, + AA6C7C391550AE5000600DAA /* PLCrashAsyncImage.h */, + AA6C7C3A1550AE5000600DAA /* PLCrashAsyncSignalInfo.h */, + AA6C7C3B1550AE5000600DAA /* PLCrashFrameWalker.h */, + AA6C7C3C1550AE5000600DAA /* PLCrashFrameWalker_arm.h */, + AA6C7C3D1550AE5000600DAA /* PLCrashFrameWalker_i386.h */, + AA6C7C3E1550AE5000600DAA /* PLCrashFrameWalker_ppc.h */, + AA6C7C3F1550AE5000600DAA /* PLCrashFrameWalker_x86_64.h */, + AA6C7C401550AE5000600DAA /* PLCrashLogWriter.h */, + AA6C7C411550AE5000600DAA /* PLCrashLogWriterEncoding.h */, + AA6C7C421550AE5000600DAA /* PLCrashReport.h */, + AA6C7C431550AE5000600DAA /* PLCrashReportApplicationInfo.h */, + AA6C7C441550AE5000600DAA /* PLCrashReportBinaryImageInfo.h */, + AA6C7C451550AE5000600DAA /* PLCrashReporter.h */, + AA6C7C461550AE5000600DAA /* PLCrashReportExceptionInfo.h */, + AA6C7C471550AE5000600DAA /* PLCrashReportFormatter.h */, + AA6C7C481550AE5000600DAA /* PLCrashReportMachineInfo.h */, + AA6C7C491550AE5000600DAA /* PLCrashReportProcessInfo.h */, + AA6C7C4A1550AE5000600DAA /* PLCrashReportProcessorInfo.h */, + AA6C7C4B1550AE5000600DAA /* PLCrashReportSignalInfo.h */, + AA6C7C4C1550AE5000600DAA /* PLCrashReportSystemInfo.h */, + AA6C7C4D1550AE5000600DAA /* PLCrashReportTextFormatter.h */, + AA6C7C4E1550AE5000600DAA /* PLCrashReportThreadInfo.h */, + AA6C7C4F1550AE5000600DAA /* PLCrashSignalHandler.h */, + AA6C7C501550AE5000600DAA /* PLCrashSysctl.h */, + AA6C7C511550AE5000600DAA /* Resources */, + ); + name = CrittercismSDK; + path = lib/CrittercismSDK; + sourceTree = ""; + }; + AA6C7C511550AE5000600DAA /* Resources */ = { + isa = PBXGroup; + children = ( + AA6C7C521550AE5000600DAA /* Images */, + AA6C7C941550AE5000600DAA /* Nibs */, + ); + path = Resources; + sourceTree = ""; + }; + AA6C7C521550AE5000600DAA /* Images */ = { + isa = PBXGroup; + children = ( + AA6C7C531550AE5000600DAA /* crittercism-arrow-l.png */, + AA6C7C541550AE5000600DAA /* crittercism-arrow-l@2x.png */, + AA6C7C551550AE5000600DAA /* crittercism-arrow-left-gray-border.png */, + AA6C7C561550AE5000600DAA /* crittercism-arrow-left-no-border.png */, + AA6C7C571550AE5000600DAA /* crittercism-arrow-left.png */, + AA6C7C581550AE5000600DAA /* crittercism-arrow-let-no-border.png */, + AA6C7C591550AE5000600DAA /* crittercism-arrow-r.png */, + AA6C7C5A1550AE5000600DAA /* crittercism-arrow-r@2x.png */, + AA6C7C5B1550AE5000600DAA /* crittercism-arrow-right-green-border.png */, + AA6C7C5C1550AE5000600DAA /* crittercism-arrow-right-no-border.png */, + AA6C7C5D1550AE5000600DAA /* crittercism-avatar-default.png */, + AA6C7C5E1550AE5000600DAA /* crittercism-avatar-us.png */, + AA6C7C5F1550AE5000600DAA /* crittercism-bg-00.png */, + AA6C7C601550AE5000600DAA /* crittercism-bg-categorize-as.png */, + AA6C7C611550AE5000600DAA /* crittercism-bg-edit-form.png */, + AA6C7C621550AE5000600DAA /* crittercism-bg-edit-form@2x~iphone.png */, + AA6C7C631550AE5000600DAA /* crittercism-bg-inactive-overlay.png */, + AA6C7C641550AE5000600DAA /* crittercism-bg-reply-to.png */, + AA6C7C651550AE5000600DAA /* crittercism-btn-add-comment-sel.png */, + AA6C7C661550AE5000600DAA /* crittercism-btn-add-comment.png */, + AA6C7C671550AE5000600DAA /* crittercism-btn-cancel.png */, + AA6C7C681550AE5000600DAA /* crittercism-btn-close.png */, + AA6C7C691550AE5000600DAA /* crittercism-btn-submit.png */, + AA6C7C6A1550AE5000600DAA /* crittercism-btn-thumbs-dn-default.png */, + AA6C7C6B1550AE5000600DAA /* crittercism-btn-thumbs-dn-voted.png */, + AA6C7C6C1550AE5000600DAA /* crittercism-btn-thumbs-up-default.png */, + AA6C7C6D1550AE5000600DAA /* crittercism-btn-thumbs-up-pressed.png */, + AA6C7C6E1550AE5000600DAA /* crittercism-btn-thumbs-up-pressed@2x.png */, + AA6C7C6F1550AE5000600DAA /* crittercism-btn-thumbs-up-voted.png */, + AA6C7C701550AE5000600DAA /* crittercism-btn-thumbs-up.png */, + AA6C7C711550AE5000600DAA /* crittercism-btn-thumbs-up@2x.png */, + AA6C7C721550AE5000600DAA /* crittercism-bug.png */, + AA6C7C731550AE5000600DAA /* crittercism-checkbox-checked.png */, + AA6C7C741550AE5000600DAA /* crittercism-checkbox-unchecked.png */, + AA6C7C751550AE5000600DAA /* crittercism-dev-profile-halfsize.png */, + AA6C7C761550AE5000600DAA /* crittercism-dev-profile-halfsize@2x.png */, + AA6C7C771550AE5000600DAA /* crittercism-feedback-forum-bg-gradient.png */, + AA6C7C781550AE5000600DAA /* crittercism-gray.png */, + AA6C7C791550AE5000600DAA /* crittercism-green.png */, + AA6C7C7A1550AE5000600DAA /* crittercism-hamster-ftw.png */, + AA6C7C7B1550AE5000600DAA /* crittercism-hamster-twitter.png */, + AA6C7C7C1550AE5000600DAA /* crittercism-hamster.png */, + AA6C7C7D1550AE5000600DAA /* crittercism-icon-cat-idea.png */, + AA6C7C7E1550AE5000600DAA /* crittercism-icon-cat-idea@2x.png */, + AA6C7C7F1550AE5000600DAA /* crittercism-icon-cat-love.png */, + AA6C7C801550AE5000600DAA /* crittercism-icon-cat-love@2x.png */, + AA6C7C811550AE5000600DAA /* crittercism-icon-cat-problem.png */, + AA6C7C821550AE5000600DAA /* crittercism-icon-cat-problem@2x.png */, + AA6C7C831550AE5000600DAA /* crittercism-icon-cat-question.png */, + AA6C7C841550AE5000600DAA /* crittercism-icon-cat-question@2x.png */, + AA6C7C851550AE5000600DAA /* crittercism-icon-tab-01.png */, + AA6C7C861550AE5000600DAA /* crittercism-idea.png */, + AA6C7C871550AE5000600DAA /* crittercism-love.png */, + AA6C7C881550AE5000600DAA /* crittercism-other.png */, + AA6C7C891550AE5000600DAA /* crittercism-question.png */, + AA6C7C8A1550AE5000600DAA /* crittercism-tab-icon@1x~iphone.png */, + AA6C7C8B1550AE5000600DAA /* crittercism-tab-icon@2x~ipad.png */, + AA6C7C8C1550AE5000600DAA /* crittercism-title-bar.png */, + AA6C7C8D1550AE5000600DAA /* crittercism-user-arrow-l.png */, + AA6C7C8E1550AE5000600DAA /* crittercism-user-arrow-l@2x.png */, + AA6C7C8F1550AE5000600DAA /* crittercism-user-profile-halfsize.png */, + AA6C7C901550AE5000600DAA /* crittercism-user-profile.png */, + AA6C7C911550AE5000600DAA /* crittercism-user-profile@2x.png */, + AA6C7C921550AE5000600DAA /* crittercism-votesLeftButton.png */, + AA6C7C931550AE5000600DAA /* crittercism_icon.png */, + ); + path = Images; + sourceTree = ""; + }; + AA6C7C941550AE5000600DAA /* Nibs */ = { + isa = PBXGroup; + children = ( + AA6C7C951550AE5000600DAA /* CrittercismAboutViewController.xib */, + AA6C7C961550AE5000600DAA /* CrittercismAddCommentViewController.xib */, + AA6C7C971550AE5000600DAA /* CrittercismAddViewController.xib */, + AA6C7C981550AE5000600DAA /* CrittercismCell.xib */, + AA6C7C991550AE5000600DAA /* CrittercismDescriptionViewController.xib */, + AA6C7C9A1550AE5000600DAA /* CrittercismGridViewController.xib */, + AA6C7C9B1550AE5000600DAA /* CrittercismRootViewController.xib */, + AA6C7C9C1550AE5000600DAA /* CrittercismViewController.xib */, + ); + path = Nibs; + sourceTree = ""; + }; AAB64788154E1F8600E1BCD5 /* Libraries */ = { isa = PBXGroup; children = ( + AA6C7C321550AE5000600DAA /* CrittercismSDK */, + AA6C7C2C1550AE4900600DAA /* GoogleAnalyticsSDK */, AAB6478D154E202900E1BCD5 /* TouchJSON */, AA37CC3E154F281F00CE7835 /* NSMutableArray_Shuffling.h */, AA37CC3F154F281F00CE7835 /* NSMutableArray_Shuffling.m */, @@ -326,11 +663,11 @@ AAB647B0154E2A5500E1BCD5 /* Players */ = { isa = PBXGroup; children = ( + AAB647B7154E306000E1BCD5 /* PlayerProtocol.h */, AAB647B1154E2A6E00E1BCD5 /* Player.h */, AAB647B2154E2A6E00E1BCD5 /* Player.m */, AAB647B4154E2BEC00E1BCD5 /* HumanPlayer.h */, AAB647B5154E2BEC00E1BCD5 /* HumanPlayer.m */, - AAB647B7154E306000E1BCD5 /* PlayerProtocol.h */, AA3B037B154F5C940000D6A7 /* ComputerPlayer.h */, AA3B037C154F5C940000D6A7 /* ComputerPlayer.m */, AA3B0381154F60020000D6A7 /* EasyComputerPlayer.h */, @@ -374,6 +711,8 @@ DCC1A0E613A94ED5005BD75D /* Frameworks */ = { isa = PBXGroup; children = ( + AA6C7CED1550B0B400600DAA /* libsqlite3.0.dylib */, + AA6C7CEB1550B0AF00600DAA /* CFNetwork.framework */, ); name = Frameworks; sourceTree = ""; @@ -563,6 +902,79 @@ 63ACAB101545F308004E1FF6 /* Buttons in Resources */, 63ACAB12154605BF004E1FF6 /* HUD in Resources */, 63ACAB1C15470D69004E1FF6 /* Maps in Resources */, + AA6C7C9E1550AE5000600DAA /* crittercism-arrow-l.png in Resources */, + AA6C7C9F1550AE5000600DAA /* crittercism-arrow-l@2x.png in Resources */, + AA6C7CA01550AE5000600DAA /* crittercism-arrow-left-gray-border.png in Resources */, + AA6C7CA11550AE5000600DAA /* crittercism-arrow-left-no-border.png in Resources */, + AA6C7CA21550AE5000600DAA /* crittercism-arrow-left.png in Resources */, + AA6C7CA31550AE5000600DAA /* crittercism-arrow-let-no-border.png in Resources */, + AA6C7CA41550AE5000600DAA /* crittercism-arrow-r.png in Resources */, + AA6C7CA51550AE5000600DAA /* crittercism-arrow-r@2x.png in Resources */, + AA6C7CA61550AE5000600DAA /* crittercism-arrow-right-green-border.png in Resources */, + AA6C7CA71550AE5000600DAA /* crittercism-arrow-right-no-border.png in Resources */, + AA6C7CA81550AE5000600DAA /* crittercism-avatar-default.png in Resources */, + AA6C7CA91550AE5000600DAA /* crittercism-avatar-us.png in Resources */, + AA6C7CAA1550AE5000600DAA /* crittercism-bg-00.png in Resources */, + AA6C7CAB1550AE5000600DAA /* crittercism-bg-categorize-as.png in Resources */, + AA6C7CAC1550AE5000600DAA /* crittercism-bg-edit-form.png in Resources */, + AA6C7CAD1550AE5000600DAA /* crittercism-bg-edit-form@2x~iphone.png in Resources */, + AA6C7CAE1550AE5000600DAA /* crittercism-bg-inactive-overlay.png in Resources */, + AA6C7CAF1550AE5000600DAA /* crittercism-bg-reply-to.png in Resources */, + AA6C7CB01550AE5000600DAA /* crittercism-btn-add-comment-sel.png in Resources */, + AA6C7CB11550AE5000600DAA /* crittercism-btn-add-comment.png in Resources */, + AA6C7CB21550AE5000600DAA /* crittercism-btn-cancel.png in Resources */, + AA6C7CB31550AE5000600DAA /* crittercism-btn-close.png in Resources */, + AA6C7CB41550AE5000600DAA /* crittercism-btn-submit.png in Resources */, + AA6C7CB51550AE5000600DAA /* crittercism-btn-thumbs-dn-default.png in Resources */, + AA6C7CB61550AE5000600DAA /* crittercism-btn-thumbs-dn-voted.png in Resources */, + AA6C7CB71550AE5000600DAA /* crittercism-btn-thumbs-up-default.png in Resources */, + AA6C7CB81550AE5000600DAA /* crittercism-btn-thumbs-up-pressed.png in Resources */, + AA6C7CB91550AE5000600DAA /* crittercism-btn-thumbs-up-pressed@2x.png in Resources */, + AA6C7CBA1550AE5000600DAA /* crittercism-btn-thumbs-up-voted.png in Resources */, + AA6C7CBB1550AE5000600DAA /* crittercism-btn-thumbs-up.png in Resources */, + AA6C7CBC1550AE5000600DAA /* crittercism-btn-thumbs-up@2x.png in Resources */, + AA6C7CBD1550AE5000600DAA /* crittercism-bug.png in Resources */, + AA6C7CBE1550AE5000600DAA /* crittercism-checkbox-checked.png in Resources */, + AA6C7CBF1550AE5000600DAA /* crittercism-checkbox-unchecked.png in Resources */, + AA6C7CC01550AE5000600DAA /* crittercism-dev-profile-halfsize.png in Resources */, + AA6C7CC11550AE5000600DAA /* crittercism-dev-profile-halfsize@2x.png in Resources */, + AA6C7CC21550AE5000600DAA /* crittercism-feedback-forum-bg-gradient.png in Resources */, + AA6C7CC31550AE5000600DAA /* crittercism-gray.png in Resources */, + AA6C7CC41550AE5000600DAA /* crittercism-green.png in Resources */, + AA6C7CC51550AE5000600DAA /* crittercism-hamster-ftw.png in Resources */, + AA6C7CC61550AE5000600DAA /* crittercism-hamster-twitter.png in Resources */, + AA6C7CC71550AE5000600DAA /* crittercism-hamster.png in Resources */, + AA6C7CC81550AE5000600DAA /* crittercism-icon-cat-idea.png in Resources */, + AA6C7CC91550AE5000600DAA /* crittercism-icon-cat-idea@2x.png in Resources */, + AA6C7CCA1550AE5000600DAA /* crittercism-icon-cat-love.png in Resources */, + AA6C7CCB1550AE5000600DAA /* crittercism-icon-cat-love@2x.png in Resources */, + AA6C7CCC1550AE5000600DAA /* crittercism-icon-cat-problem.png in Resources */, + AA6C7CCD1550AE5000600DAA /* crittercism-icon-cat-problem@2x.png in Resources */, + AA6C7CCE1550AE5000600DAA /* crittercism-icon-cat-question.png in Resources */, + AA6C7CCF1550AE5000600DAA /* crittercism-icon-cat-question@2x.png in Resources */, + AA6C7CD01550AE5000600DAA /* crittercism-icon-tab-01.png in Resources */, + AA6C7CD11550AE5000600DAA /* crittercism-idea.png in Resources */, + AA6C7CD21550AE5000600DAA /* crittercism-love.png in Resources */, + AA6C7CD31550AE5000600DAA /* crittercism-other.png in Resources */, + AA6C7CD41550AE5000600DAA /* crittercism-question.png in Resources */, + AA6C7CD51550AE5000600DAA /* crittercism-tab-icon@1x~iphone.png in Resources */, + AA6C7CD61550AE5000600DAA /* crittercism-tab-icon@2x~ipad.png in Resources */, + AA6C7CD71550AE5000600DAA /* crittercism-title-bar.png in Resources */, + AA6C7CD81550AE5000600DAA /* crittercism-user-arrow-l.png in Resources */, + AA6C7CD91550AE5000600DAA /* crittercism-user-arrow-l@2x.png in Resources */, + AA6C7CDA1550AE5000600DAA /* crittercism-user-profile-halfsize.png in Resources */, + AA6C7CDB1550AE5000600DAA /* crittercism-user-profile.png in Resources */, + AA6C7CDC1550AE5000600DAA /* crittercism-user-profile@2x.png in Resources */, + AA6C7CDD1550AE5000600DAA /* crittercism-votesLeftButton.png in Resources */, + AA6C7CDE1550AE5000600DAA /* crittercism_icon.png in Resources */, + AA6C7CDF1550AE5000600DAA /* CrittercismAboutViewController.xib in Resources */, + AA6C7CE01550AE5000600DAA /* CrittercismAddCommentViewController.xib in Resources */, + AA6C7CE11550AE5000600DAA /* CrittercismAddViewController.xib in Resources */, + AA6C7CE21550AE5000600DAA /* CrittercismCell.xib in Resources */, + AA6C7CE31550AE5000600DAA /* CrittercismDescriptionViewController.xib in Resources */, + AA6C7CE41550AE5000600DAA /* CrittercismGridViewController.xib in Resources */, + AA6C7CE51550AE5000600DAA /* CrittercismRootViewController.xib in Resources */, + AA6C7CE61550AE5000600DAA /* CrittercismViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -666,8 +1078,10 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../__Kobold2D__/libs/GoogleAdMobAdsSDK\"", + "\"$(SRCROOT)/Projectfiles/lib/Google Analytics SDK/Library\"", + "\"$(SRCROOT)/Projectfiles/lib/CrittercismSDK\"", ); - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 2; }; name = Debug; }; @@ -679,8 +1093,10 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../__Kobold2D__/libs/GoogleAdMobAdsSDK\"", + "\"$(SRCROOT)/Projectfiles/lib/Google Analytics SDK/Library\"", + "\"$(SRCROOT)/Projectfiles/lib/CrittercismSDK\"", ); - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 2; }; name = Release; }; diff --git a/Projectfiles-iOS/Resources/Info.plist b/Projectfiles-iOS/Resources/Info.plist index c52bc60..e37a7b8 100755 --- a/Projectfiles-iOS/Resources/Info.plist +++ b/Projectfiles-iOS/Resources/Info.plist @@ -20,7 +20,7 @@ Icon-Small@2x.png CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} + com.conquercorp.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Projectfiles/AppDelegate.m b/Projectfiles/AppDelegate.m index 1765a82..cd58b55 100755 --- a/Projectfiles/AppDelegate.m +++ b/Projectfiles/AppDelegate.m @@ -5,6 +5,8 @@ * Released under MIT License in Germany (LICENSE-Kobold2D.txt). */ +#import "Constants.h" +#import "Crittercism.h" #import "AppDelegate.h" @implementation AppDelegate @@ -16,6 +18,41 @@ -(void) initializationComplete #else CCLOG(@"ARC is either not available or not enabled"); #endif + + + + + [self initializeGoogleAnalytics]; + + [self initializeCrittercism]; + +} + +-(void)initializeCrittercism { + NSLog(@"Initializing Crittercism"); + //initialize Crittercism for crash reporting (https://www.crittercism.com/developers/docs) + if(!DEBUG_MODE) { + [Crittercism initWithAppID: @"4fa06fabb09315487d0000c9" + andKey:@"tcsqy9w16rpdl3achkorylf5hpxx" + andSecret:@"snouryb9xqm4lkn2mh0b8ua6lwoegqex"]; + + } +} + +-(void)initializeGoogleAnalytics { + NSLog(@"Initializing Google Analytics"); + + const NSInteger kGANDispatchPeriodSec = 10; + [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-31019270-2" + dispatchPeriod:kGANDispatchPeriodSec + delegate:nil]; + + + + if(DEBUG_MODE) { + GASetVar(@"DebugMode", @"YES"); + } + } -(id) alternateRootViewController diff --git a/Projectfiles/Constants.h b/Projectfiles/Constants.h index bfa83ea..0e82b1e 100644 --- a/Projectfiles/Constants.h +++ b/Projectfiles/Constants.h @@ -12,7 +12,7 @@ #define DEBUG_MODE YES - +#import "GAWrapper.h" diff --git a/Projectfiles/EasyComputerPlayer.m b/Projectfiles/EasyComputerPlayer.m index 72bb590..dcf1d74 100644 --- a/Projectfiles/EasyComputerPlayer.m +++ b/Projectfiles/EasyComputerPlayer.m @@ -44,7 +44,9 @@ -(void)place { stateDescription = [NSString stringWithFormat:@"%d armies to place", armiesToPlace]; + //TODO: this should NOT be done with sleeps as it screws up the game loop timing usleep(500 * 1000); + }else { [self endState]; } @@ -68,10 +70,12 @@ -(void)attack { } } - short destinationSelectAttemptCount = 0; - while((destinationTerritory == nil || destinationTerritory.owner == self) && destinationSelectAttemptCount++ < 7) { - destinationTerritory = [originTerritory.neighboringTerritories objectAtIndex:(int)(arc4random()%[originTerritory.neighboringTerritories count])]; - } + if(originTerritory != nil) { + short destinationSelectAttemptCount = 0; + while((destinationTerritory == nil || destinationTerritory.owner == self) && destinationSelectAttemptCount++ < 7) { + destinationTerritory = [originTerritory.neighboringTerritories objectAtIndex:(int)(arc4random()%[originTerritory.neighboringTerritories count])]; + } + } if(destinationTerritory.owner == self || originTerritory == nil || destinationTerritory == nil) { return; @@ -86,6 +90,7 @@ -(void)attack { originTerritory = nil; destinationTerritory = nil; + //TODO: this should NOT be done with sleeps as it screws up the game loop timing usleep(500 * 1000); }else { diff --git a/Projectfiles/GameLostScene.m b/Projectfiles/GameLostScene.m index aef656c..fd10b67 100644 --- a/Projectfiles/GameLostScene.m +++ b/Projectfiles/GameLostScene.m @@ -6,6 +6,7 @@ // Copyright (c) 2012 Conquer, LLC. All rights reserved. // +#import "Constants.h" #import "GameLostScene.h" #import "GameModeSelectionScene.h" @@ -42,6 +43,8 @@ -(id) init { gameLostLabel.position = ccp(winSize.width/2, winSize.height/2); [self addChild: gameLostLabel]; + GALogPageView(@"/GameLostScene") + NSLog(@"GameLostScene created"); } diff --git a/Projectfiles/GameModeSelectionScene.m b/Projectfiles/GameModeSelectionScene.m index 0f32ed3..af1f109 100755 --- a/Projectfiles/GameModeSelectionScene.m +++ b/Projectfiles/GameModeSelectionScene.m @@ -6,8 +6,8 @@ // Copyright 2012 Conquer, LLC. All rights reserved. // +#import "Constants.h" #import "GameModeSelectionScene.h" - #import "SinglePlayerScene.h" @@ -38,8 +38,9 @@ -(id) init { // add the menu to your scene [self addChild:myMenu]; + GALogPageView(@"/GameModeSelectionScene") + NSLog(@"GameModeSelectionScene created"); - } diff --git a/Projectfiles/GameWonScene.m b/Projectfiles/GameWonScene.m index 5035d6b..87ff449 100644 --- a/Projectfiles/GameWonScene.m +++ b/Projectfiles/GameWonScene.m @@ -6,6 +6,7 @@ // Copyright (c) 2012 Conquer, LLC. All rights reserved. // +#import "Constants.h" #import "GameWonScene.h" #import "GameModeSelectionScene.h" @@ -42,6 +43,8 @@ -(id) init { gameWonLabel.position = ccp(winSize.width/2, winSize.height/2); [self addChild: gameWonLabel]; + GALogPageView(@"/GameWonScene") + NSLog(@"GameWonScene created"); } diff --git a/Projectfiles/Map.m b/Projectfiles/Map.m index ddeb026..1c5171c 100755 --- a/Projectfiles/Map.m +++ b/Projectfiles/Map.m @@ -84,6 +84,7 @@ -(NSArray*)territoriesForPlayer:(Player*)player { -(void)initializeMapData { NSLog(@"Loading map properties"); + double now = [[NSDate date] timeIntervalSince1970]; NSData *jsonData = [NSData dataWithContentsOfFile:[NSString stringWithFormat:@"Maps/%@/Properties.json", name]]; NSError *error = nil; @@ -96,8 +97,9 @@ -(void)initializeMapData { initialArmiesPerTerritory = [(NSString*)([properties objectForKey:@"InitialArmiesPerTerritory"]) intValue]; armiesPerTurn = [(NSString*)([properties objectForKey:@"ArmiesPerTurn"]) intValue]; territoriesForAdditionalArmyPerTurn = [(NSString*)([properties objectForKey:@"TerritoriesForAdditionalArmyPerTurn"]) intValue]; - NSLog(@"Armies per turn: %d", armiesPerTurn); - NSLog(@"Territories required for each additional army per turn: %d", territoriesForAdditionalArmyPerTurn); + NSLog(@"InitialArmiesPerTerritory: %d", initialArmiesPerTerritory); + NSLog(@"ArmiesPerTurn: %d", armiesPerTurn); + NSLog(@"TerritoriesForAdditionalArmyPerTurn: %d", territoriesForAdditionalArmyPerTurn); NSDictionary* territoryInfoMap = [properties objectForKey:@"Territories"]; NSDictionary* continentInfoMap = [properties objectForKey:@"Continents"]; @@ -244,6 +246,8 @@ -(void)initializeMapData { NSLog(@"Hitmap created"); + double elapsed = [[NSDate date] timeIntervalSince1970] - now; + GALogEvent(@"Map", @"Load Time", name, elapsed); } -(UInt32)colorAtLocation:(CGPoint)location { diff --git a/Projectfiles/SinglePlayerScene.m b/Projectfiles/SinglePlayerScene.m index b7ab7d6..f36b4f0 100755 --- a/Projectfiles/SinglePlayerScene.m +++ b/Projectfiles/SinglePlayerScene.m @@ -92,7 +92,8 @@ -(id) init { [self schedule:@selector(gameLoop:)]; }); - + GALogPageView(@"/SinglePlayerScene") + NSLog(@"SinglePlayerScene created"); } diff --git a/Projectfiles/lib/.DS_Store b/Projectfiles/lib/.DS_Store index 467ce44..e001ce1 100644 Binary files a/Projectfiles/lib/.DS_Store and b/Projectfiles/lib/.DS_Store differ diff --git a/Projectfiles/lib/CrittercismSDK/CrashReporter.h b/Projectfiles/lib/CrittercismSDK/CrashReporter.h new file mode 100755 index 0000000..7239d6d --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/CrashReporter.h @@ -0,0 +1,229 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +#ifdef __APPLE__ +#import +#endif + +#import "PLCrashReporter.h" +#import "PLCrashReport.h" +#import "PLCrashReportTextFormatter.h" + +/** + * @defgroup functions Crash Reporter Functions Reference + */ + +/** + * @defgroup types Crash Reporter Data Types Reference + */ + +/** + * @defgroup constants Crash Reporter Constants Reference + */ + +/** + * @internal + * @defgroup plcrash_internal Crash Reporter Internal Documentation + */ + +/** + * @defgroup enums Enumerations + * @ingroup constants + */ + +/** + * @defgroup globals Global Variables + * @ingroup constants + */ + +/** + * @defgroup exceptions Exceptions + * @ingroup constants + */ + +/* Exceptions */ +extern NSString *PLCrashReporterException; + +/* Error Domain and Codes */ +extern NSString *PLCrashReporterErrorDomain; + +/** + * NSError codes in the Plausible Crash Reporter error domain. + * @ingroup enums + */ +typedef enum { + /** An unknown error has occured. If this + * code is received, it is a bug, and should be reported. */ + PLCrashReporterErrorUnknown = 0, + + /** An Mach or POSIX operating system error has occured. The underlying NSError cause may be fetched from the userInfo + * dictionary using the NSUnderlyingErrorKey key. */ + PLCrashReporterErrorOperatingSystem = 1, + + /** The crash report log file is corrupt or invalid */ + PLCrashReporterErrorCrashReportInvalid = 2, +} PLCrashReporterError; + + +/* Library Imports */ +#import "PLCrashReporter.h" +#import "PLCrashReport.h" +#import "PLCrashReportTextFormatter.h" + +/** + * @mainpage Plausible Crash Reporter + * + * @section intro_sec Introduction + * + * Plausile CrashReporter implements in-process crash reporting on the iPhone and Mac OS X. + * + * The following features are supported: + * + * - Implemented as an in-process signal handler. + * - Does not interfer with debugging in gdb.. + * - Handles both uncaught Objective-C exceptions and fatal signals (SIGSEGV, SIGBUS, etc). + * - Full thread state for all active threads (backtraces, register dumps) is provided. + * + * If your application crashes, a crash report will be written. When the application is next run, you may check for a + * pending crash report, and submit the report to your own HTTP server, send an e-mail, or even introspect the + * report locally. + * + * @section intro_encoding Crash Report Format + * + * Crash logs are encoded using google protobuf, and may be decoded + * using the provided PLCrashReport API. Additionally, the include plcrashutil handles conversion of binary crash reports to the + * symbolicate-compatible iPhone text format. + * + * @section doc_sections Documentation Sections + * - @subpage example_usage_iphone + * - @subpage error_handling + * - @subpage async_safety + */ + +/** + * @page example_usage_iphone Example iPhone Usage + * + * @code + * // + * // Called to handle a pending crash report. + * // + * - (void) handleCrashReport { + * PLCrashReporter *crashReporter = [PLCrashReporter sharedReporter]; + * NSData *crashData; + * NSError *error; + * + * // Try loading the crash report + * crashData = [crashReporter loadPendingCrashReportDataAndReturnError: &error]; + * if (crashData == nil) { + * NSLog(@"Could not load crash report: %@", error); + * goto finish; + * } + * + * // We could send the report from here, but we'll just print out + * // some debugging info instead + * PLCrashReport *report = [[[PLCrashReport alloc] initWithData: crashData error: &error] autorelease]; + * if (report == nil) { + * NSLog(@"Could not parse crash report"); + * goto finish; + * } + * + * NSLog(@"Crashed on %@", report.systemInfo.timestamp); + * NSLog(@"Crashed with signal %@ (code %@, address=0x%" PRIx64 ")", report.signalInfo.name, + * report.signalInfo.code, report.signalInfo.address); + * + * // Purge the report + * finish: + * [crashReporter purgePendingCrashReport]; + * return; + * } + * + * // from UIApplicationDelegate protocol + * - (void) applicationDidFinishLaunching: (UIApplication *) application { + * PLCrashReporter *crashReporter = [PLCrashReporter sharedReporter]; + * NSError *error; + * + * // Check if we previously crashed + * if ([crashReporter hasPendingCrashReport]) + * [self handleCrashReport]; + + * // Enable the Crash Reporter + * if (![crashReporter enableCrashReporterAndReturnError: &error]) + * NSLog(@"Warning: Could not enable crash reporter: %@", error); + * + * } + * @endcode + * + */ + +/** + * @page error_handling Error Handling Programming Guide + * + * Where a method may return an error, Plausible Crash Reporter provides access to the underlying + * cause via an optional NSError argument. + * + * All returned errors will be a member of one of the below defined domains, however, new domains and + * error codes may be added at any time. If you do not wish to report on the error cause, many methods + * support a simple form that requires no NSError argument. + * + * @section error_domains Error Domains, Codes, and User Info + * + * @subsection crashreporter_errors Crash Reporter Errors + * + * Any errors in Plausible Crash Reporter use the #PLCrashReporterErrorDomain error domain, and and one + * of the error codes defined in #PLCrashReporterError. + */ + +/** + * @page async_safety Async-Safe Programming Guide + * + * Plausible CrashReporter provides support for executing an application specified function in the context of the + * crash reporter's signal handler, after the crash report has been written to disk. This was a regularly requested + * feature, and provides the ability to implement application finalization in the event of a crash. However, writing + * code intended for execution inside of a signal handler is exceptionally difficult, and is not recommended. + * + * @section program_flow Program Flow and Signal Handlers + * + * When the signal handler is called the normal flow of the program is interrupted, and your program is an unknown + * state. Locks may be held, the heap may be corrupt (or in the process of being updated), and your signal + * handler may invoke a function that was being executed at the time of the signal. This may result in deadlocks, + * data corruption, and program termination. + * + * @section functions Async-Safe Functions + * + * A subset of functions are defined to be async-safe by the OS, and are safely callable from within a signal handler. If + * you do implement a custom post-crash handler, it must be async-safe. A table of POSIX-defined async-safe functions + * and additional information is available from the + * CERT programming guide - SIG30-C + * + * Most notably, the Objective-C runtime itself is not async-safe, and Objective-C may not be used within a signal + * handler. + * + * @sa PLCrashReporter::setCrashCallbacks: + */ \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/Crittercism.h b/Projectfiles/lib/CrittercismSDK/Crittercism.h new file mode 100644 index 0000000..b44622f --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Crittercism.h @@ -0,0 +1,81 @@ +// +// Crittercism.h +// Crittercism-iOS +// +// Created by Robert Kwok on 8/15/10. +// Copyright 2010-2012 Crittercism Corp. All rights reserved. +// + +#import +#import +#import "CrittercismJSONKit.h" +#import +#import "CrittercismReachability.h" +//#import "" + +// Support Forum +@class CrittercismViewController; + +@protocol CrittercismDelegate + +@optional +-(void) crittercismDidClose; +-(void) crittercismDidCrashOnLastLoad; +@end + +@interface Crittercism : NSObject { + NSMutableData *responseData; + CFMutableDictionaryRef *connectionToInfoMapping; + id delegate; + BOOL didCrashOnLastLoad; + + // Support Forum + NSObject *voteDisplayer; + CrittercismViewController *crittercismViewController; + NSArray *feedbackArray; +} + +@property(retain) id delegate; +@property(assign) BOOL didCrashOnLastLoad; + +// Support Forum +@property(nonatomic, retain) CrittercismViewController *crittercismViewController; +@property(nonatomic, retain) NSObject *voteDisplayer; +@property(retain) NSArray *feedbackArray; + ++ (Crittercism *)sharedInstance; ++ (void) initWithAppID:(NSString *)_app_id andKey:(NSString *)_keyStr andSecret:(NSString *)_secretStr; ++ (void) initWithAppID:(NSString *)_app_id andKey:(NSString *)_keyStr andSecret:(NSString *)_secretStr andMainViewController:(UIViewController *)_mainViewController; ++ (NSString *) getAppID; ++ (NSString *) getKey; ++ (NSString *) getSecret; ++ (void) configurePushNotification:(NSData *) deviceToken; ++ (void) setAge:(int)age; ++ (void) setGender:(NSString *)gender; ++ (void) setUsername:(NSString *)username; ++ (void) setEmail:(NSString *)email; ++ (void) setValue:(NSString *)value forKey:(NSString *)key; ++ (int) getCurrentOrientation; ++ (void) setCurrentOrientation: (int)_orientation; ++ (void) leaveBreadcrumb:(NSString *)breadcrumb; ++ (void) setOptOutStatus: (BOOL) _optOutStatus; ++ (BOOL) getOptOutStatus; + +// Support Forum ++ (void)showCrittercism; ++ (void)showCrittercism:(UIViewController *)_mainViewController; +- (CrittercismViewController *) getCrittercism; +- (UIViewController *) getMainViewController; +- (void) setTintRed:(float) _red green:(float)_green blue:(float)_blue; +- (void) hideCrittercism; +- (void) setDisplayer:(NSObject *)_displayer; +- (void) updateVotes; +- (void) addVote:(NSString *)_eventName; +- (void) addVote; +- (int) getVotes; +- (void) setVotes:(int) _numVotes; +- (void) setNavTitle:(NSString *)_title; +- (NSString *) getNavTitle; +- (void) addGradient:(UIButton *) _button; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/CrittercismJSONKit.h b/Projectfiles/lib/CrittercismSDK/CrittercismJSONKit.h new file mode 100755 index 0000000..03862d0 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/CrittercismJSONKit.h @@ -0,0 +1,251 @@ +// +// CrittercismJSONKit.h +// http://github.com/johnezang/JSONKit +// Dual licensed under either the terms of the BSD License, or alternatively +// under the terms of the Apache License, Version 2.0, as specified below. +// + +/* + Copyright (c) 2011, John Engelhart + + 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 Zang Industries 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 THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* + Copyright 2011 John Engelhart + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include +#include +#include +#include +#include + +#ifdef __OBJC__ +#import +#import +#import +#import +#import +#import +#endif // __OBJC__ + +#ifdef __cplusplus +extern "C" { +#endif + + +// For Mac OS X < 10.5. +#ifndef NSINTEGER_DEFINED +#define NSINTEGER_DEFINED +#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64) +typedef long NSInteger; +typedef unsigned long NSUInteger; +#define NSIntegerMin LONG_MIN +#define NSIntegerMax LONG_MAX +#define NSUIntegerMax ULONG_MAX +#else // defined(__LP64__) || defined(NS_BUILD_32_LIKE_64) +typedef int NSInteger; +typedef unsigned int NSUInteger; +#define NSIntegerMin INT_MIN +#define NSIntegerMax INT_MAX +#define NSUIntegerMax UINT_MAX +#endif // defined(__LP64__) || defined(NS_BUILD_32_LIKE_64) +#endif // NSINTEGER_DEFINED + + +#ifndef _JSONKIT_H_ +#define _JSONKIT_H_ + +#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__APPLE_CC__) && (__APPLE_CC__ >= 5465) +#define CrittercismJK_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) +#else +#define CrittercismJK_DEPRECATED_ATTRIBUTE +#endif + +#define CRITTERCISON_VERSION_MAJOR 1 +#define CRITTERCISON_VERSION_MINOR 4 + +typedef NSUInteger CrittercismJKFlags; + +/* + CrittercismJKParseOptionComments : Allow C style // and /_* ... *_/ (without a _, obviously) comments in JSON. + CrittercismJKParseOptionUnicodeNewlines : Allow Unicode recommended (?:\r\n|[\n\v\f\r\x85\p{Zl}\p{Zp}]) newlines. + CrittercismJKParseOptionLooseUnicode : Normally the decoder will stop with an error at any malformed Unicode. + This option allows JSON with malformed Unicode to be parsed without reporting an error. + Any malformed Unicode is replaced with \uFFFD, or "REPLACEMENT CHARACTER". + */ + +enum { + CrittercismJKParseOptionNone = 0, + CrittercismJKParseOptionStrict = 0, + CrittercismJKParseOptionComments = (1 << 0), + CrittercismJKParseOptionUnicodeNewlines = (1 << 1), + CrittercismJKParseOptionLooseUnicode = (1 << 2), + CrittercismJKParseOptionPermitTextAfterValidJSON = (1 << 3), + CrittercismJKParseOptionValidFlags = (CrittercismJKParseOptionComments | CrittercismJKParseOptionUnicodeNewlines | CrittercismJKParseOptionLooseUnicode | CrittercismJKParseOptionPermitTextAfterValidJSON), +}; +typedef CrittercismJKFlags CrittercismJKParseOptionFlags; + +enum { + CrittercismJKSerializeOptionNone = 0, + CrittercismJKSerializeOptionPretty = (1 << 0), + CrittercismJKSerializeOptionEscapeUnicode = (1 << 1), + CrittercismJKSerializeOptionEscapeForwardSlashes = (1 << 4), + CrittercismJKSerializeOptionValidFlags = (CrittercismJKSerializeOptionPretty | CrittercismJKSerializeOptionEscapeUnicode | CrittercismJKSerializeOptionEscapeForwardSlashes), +}; +typedef CrittercismJKFlags CrittercismJKSerializeOptionFlags; + +#ifdef __OBJC__ + +typedef struct CrittercismJKParseState CrittercismJKParseState; // Opaque internal, private type. + +// As a general rule of thumb, if you use a method that doesn't accept a CrittercismJKParseOptionFlags argument, it defaults to CrittercismJKParseOptionStrict + +@interface CrittercismJSONKitDeserializing : NSObject { + CrittercismJKParseState *parseState; +} ++ (id)decoder; ++ (id)decoderWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags; +- (id)initWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags; +- (void)clearCache; + +// The parse... methods were deprecated in v1.4 in favor of the v1.4 objectWith... methods. +- (id)parseUTF8String:(const unsigned char *)string length:(size_t)length CrittercismJK_DEPRECATED_ATTRIBUTE; // Deprecated in JSONKit v1.4. Use objectWithUTF8String:length: instead. +- (id)parseUTF8String:(const unsigned char *)string length:(size_t)length error:(NSError **)error CrittercismJK_DEPRECATED_ATTRIBUTE; // Deprecated in JSONKit v1.4. Use objectWithUTF8String:length:error: instead. +// The NSData MUST be UTF8 encoded JSON. +- (id)parseJSONData:(NSData *)jsonData CrittercismJK_DEPRECATED_ATTRIBUTE; // Deprecated in JSONKit v1.4. Use objectWithData: instead. +- (id)parseJSONData:(NSData *)jsonData error:(NSError **)error CrittercismJK_DEPRECATED_ATTRIBUTE; // Deprecated in JSONKit v1.4. Use objectWithData:error: instead. + +// Methods that return immutable collection objects. +- (id)objectWithUTF8String:(const unsigned char *)string length:(NSUInteger)length; +- (id)objectWithUTF8String:(const unsigned char *)string length:(NSUInteger)length error:(NSError **)error; +// The NSData MUST be UTF8 encoded JSON. +- (id)objectWithData:(NSData *)jsonData; +- (id)objectWithData:(NSData *)jsonData error:(NSError **)error; + +// Methods that return mutable collection objects. +- (id)mutableObjectWithUTF8String:(const unsigned char *)string length:(NSUInteger)length; +- (id)mutableObjectWithUTF8String:(const unsigned char *)string length:(NSUInteger)length error:(NSError **)error; +// The NSData MUST be UTF8 encoded JSON. +- (id)mutableObjectWithData:(NSData *)jsonData; +- (id)mutableObjectWithData:(NSData *)jsonData error:(NSError **)error; + +@end + +//////////// +#pragma mark Deserializing methods +//////////// + +@interface NSString (CrittercismJSONKitDeserializing) +- (id)objectFromJSONString; +- (id)objectFromJSONStringWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags; +- (id)objectFromJSONStringWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags error:(NSError **)error; +- (id)mutableObjectFromJSONString; +- (id)mutableObjectFromJSONStringWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags; +- (id)mutableObjectFromJSONStringWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags error:(NSError **)error; +@end + +@interface NSData (CrittercismJSONKitDeserializing) +// The NSData MUST be UTF8 encoded JSON. +- (id)objectFromJSONData; +- (id)objectFromJSONDataWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags; +- (id)objectFromJSONDataWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags error:(NSError **)error; +- (id)mutableObjectFromJSONData; +- (id)mutableObjectFromJSONDataWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags; +- (id)mutableObjectFromJSONDataWithParseOptions:(CrittercismJKParseOptionFlags)parseOptionFlags error:(NSError **)error; +@end + +//////////// +#pragma mark Serializing methods +//////////// + +@interface NSString (CrittercismJSONKitSerializing) +// Convenience methods for those that need to serialize the receiving NSString (i.e., instead of having to serialize a NSArray with a single NSString, you can "serialize to JSON" just the NSString). +// Normally, a string that is serialized to JSON has quotation marks surrounding it, which you may or may not want when serializing a single string, and can be controlled with includeQuotes: +// includeQuotes:YES `a "test"...` -> `"a \"test\"..."` +// includeQuotes:NO `a "test"...` -> `a \"test\"...` +- (NSData *)JSONData; // Invokes JSONDataWithOptions:CrittercismJKSerializeOptionNone includeQuotes:YES +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions includeQuotes:(BOOL)includeQuotes error:(NSError **)error; +- (NSString *)CrittercismJSONString; // Invokes CrittercismJSONStringWithOptions:CrittercismJKSerializeOptionNone includeQuotes:YES +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions includeQuotes:(BOOL)includeQuotes error:(NSError **)error; +@end + +@interface NSArray (CrittercismJSONKitSerializing) +- (NSData *)JSONData; +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions error:(NSError **)error; +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingDelegate:(id)delegate selector:(SEL)selector error:(NSError **)error; +- (NSString *)CrittercismJSONString; +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions error:(NSError **)error; +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingDelegate:(id)delegate selector:(SEL)selector error:(NSError **)error; +@end + +@interface NSDictionary (CrittercismJSONKitSerializing) +- (NSData *)JSONData; +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions error:(NSError **)error; +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingDelegate:(id)delegate selector:(SEL)selector error:(NSError **)error; +- (NSString *)CrittercismJSONString; +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions error:(NSError **)error; +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingDelegate:(id)delegate selector:(SEL)selector error:(NSError **)error; +@end + +#ifdef __BLOCKS__ + +@interface NSArray (CrittercismJSONKitSerializingBlockAdditions) +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingBlock:(id(^)(id object))block error:(NSError **)error; +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingBlock:(id(^)(id object))block error:(NSError **)error; +@end + +@interface NSDictionary (CrittercismJSONKitSerializingBlockAdditions) +- (NSData *)JSONDataWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingBlock:(id(^)(id object))block error:(NSError **)error; +- (NSString *)CrittercismJSONStringWithOptions:(CrittercismJKSerializeOptionFlags)serializeOptions serializeUnsupportedClassesUsingBlock:(id(^)(id object))block error:(NSError **)error; +@end + +#endif + + +#endif // __OBJC__ + +#endif // _JSONKIT_H_ + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/Projectfiles/lib/CrittercismSDK/CrittercismReachability.h b/Projectfiles/lib/CrittercismSDK/CrittercismReachability.h new file mode 100644 index 0000000..768261b --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/CrittercismReachability.h @@ -0,0 +1,89 @@ +/* + + File: Reachability.h + Abstract: Basic demonstration of how to use the SystemConfiguration Reachablity APIs. + + Version: 2.2 + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under + Apple's copyrights in this original Apple software (the "Apple Software"), to + use, reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions + of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may be used + to endorse or promote products derived from the Apple Software without specific + prior written permission from Apple. Except as expressly stated in this notice, + no other rights or licenses, express or implied, are granted by Apple herein, + including but not limited to any patent rights that may be infringed by your + derivative works or by other works in which the Apple Software may be + incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR + DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF + CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF + APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2010 Apple Inc. All Rights Reserved. + +*/ + + +#import +#import +#import + +typedef enum { + CrittercismNotReachable = 0, + CrittercismReachableViaWiFi, + CrittercismReachableViaWWAN +} CrittercismNetworkStatus; +#define kCrittercismReachabilityChangedNotification @"kNetworkCrittercismReachabilityChangedNotification" + +@interface CrittercismReachability: NSObject +{ + BOOL localWiFiRef; + SCNetworkReachabilityRef reachabilityRef; +} + +//reachabilityWithHostName- Use to check the reachability of a particular host name. ++ (CrittercismReachability*) reachabilityWithHostName: (NSString*) hostName; + +//reachabilityWithAddress- Use to check the reachability of a particular IP address. ++ (CrittercismReachability*) reachabilityWithAddress: (const struct sockaddr_in*) hostAddress; + +//reachabilityForInternetConnection- checks whether the default route is available. +// Should be used by applications that do not connect to a particular host ++ (CrittercismReachability*) reachabilityForInternetConnection; + +//reachabilityForLocalWiFi- checks whether a local wifi connection is available. ++ (CrittercismReachability*) reachabilityForLocalWiFi; + +//Start listening for reachability notifications on the current run loop +- (BOOL) startNotifier; +- (void) stopNotifier; + +- (CrittercismNetworkStatus) currentReachabilityStatus; +//WWAN may be available, but not active until a connection has been established. +//WiFi may require a connection for VPN on Demand. +- (BOOL) connectionRequired; +@end + + diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashAsync.h b/Projectfiles/lib/CrittercismSDK/PLCrashAsync.h new file mode 100755 index 0000000..221d8fa --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashAsync.h @@ -0,0 +1,110 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +#import // for snprintf +#import +#import + +// Debug output support. Lines are capped at 128 (stack space is scarce). This implemention +// is not async-safe and should not be enabled in release builds +#ifdef PLCF_RELEASE_BUILD + +#define PLCF_DEBUG(msg, args...) + +#else + +#define PLCF_DEBUG(msg, args...) {\ + char output[128];\ + snprintf(output, sizeof(output), "[PLCrashReport] " msg "\n", ## args); \ + write(STDERR_FILENO, output, strlen(output));\ +} + +#endif /* PLCF_RELEASE_BUILD */ + + +/** + * @ingroup plcrash_async + * Error return codes. + */ +typedef enum { + /** Success */ + PLCRASH_ESUCCESS = 0, + + /** Unknown error (if found, is a bug) */ + PLCRASH_EUNKNOWN, + + /** The output file can not be opened or written to */ + PLCRASH_OUTPUT_ERR, + + /** No memory available (allocation failed) */ + PLCRASH_ENOMEM, + + /** Unsupported operation */ + PLCRASH_ENOTSUP, + + /** Invalid argument */ + PLCRASH_EINVAL, + + /** Internal error */ + PLCRASH_EINTERNAL, +} plcrash_error_t; + +const char *plcrash_strerror (plcrash_error_t error); + +void *plcrash_async_memcpy(void *dest, const void *source, size_t n); + +/** + * @internal + * @ingroup plcrash_async_bufio + * + * Async-safe buffered file output. This implementation is only intended for use + * within signal handler execution of crash log output. + */ +typedef struct plcrash_async_file { + /** Output file descriptor */ + int fd; + + /** Output limit */ + off_t limit_bytes; + + /** Total bytes written */ + off_t total_bytes; + + /** Current length of data in buffer */ + size_t buflen; + + /** Buffered output */ + char buffer[256]; +} plcrash_async_file_t; + + +void plcrash_async_file_init (plcrash_async_file_t *file, int fd, off_t output_limit); +bool plcrash_async_file_write (plcrash_async_file_t *file, const void *data, size_t len); +bool plcrash_async_file_flush (plcrash_async_file_t *file); +bool plcrash_async_file_close (plcrash_async_file_t *file); diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashAsyncImage.h b/Projectfiles/lib/CrittercismSDK/PLCrashAsyncImage.h new file mode 100755 index 0000000..de1410f --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashAsyncImage.h @@ -0,0 +1,84 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +/** + * @internal + * @ingroup plcrash_async_image + * + * Async-safe binary image list element. + */ +typedef struct plcrash_async_image { + /** The binary image's header address. */ + uintptr_t header; + + /** The binary image's name/path. */ + char *name; + + /** The previous image in the list, or NULL */ + struct plcrash_async_image *prev; + + /** The next image in the list, or NULL. */ + struct plcrash_async_image *next; +} plcrash_async_image_t; + +/** + * @internal + * @ingroup plcrash_async_image + * + * Async-safe binary image list. May be used to iterate over the binary images currently + * available in-process. + */ +typedef struct plcrash_async_image_list { + /** The lock used by writers. No lock is required for readers. */ + OSSpinLock write_lock; + + /** The head of the list, or NULL if the list is empty. Must only be used to iterate or delete entries. */ + plcrash_async_image_t *head; + + /** The tail of the list, or NULL if the list is empty. Must only be used to append new entries. */ + plcrash_async_image_t *tail; + + /** The list reference count. No nodes will be deallocated while the count is greater than 0. If the count + * reaches 0, all nodes in the free list will be deallocated. */ + int32_t refcount; + + /** The node free list. */ + plcrash_async_image_t *free; +} plcrash_async_image_list_t; + +void plcrash_async_image_list_init (plcrash_async_image_list_t *list); +void plcrash_async_image_list_free (plcrash_async_image_list_t *list); +void plcrash_async_image_list_append (plcrash_async_image_list_t *list, uintptr_t header, const char *name); +void plcrash_async_image_list_remove (plcrash_async_image_list_t *list, uintptr_t header); + +void plcrash_async_image_list_set_reading (plcrash_async_image_list_t *list, bool enable); +plcrash_async_image_t *plcrash_async_image_list_next (plcrash_async_image_list_t *list, plcrash_async_image_t *current); diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashAsyncSignalInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashAsyncSignalInfo.h new file mode 100755 index 0000000..f05be2a --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashAsyncSignalInfo.h @@ -0,0 +1,46 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * @internal + * + * @defgroup plcrash_async_signal_info Signal Information + * @ingroup plcrash_async + * + * Provides mapping of signal number and code to strings. + * + * @{ + */ + +const char *plcrash_async_signal_signame (int signal); +const char *plcrash_async_signal_sigcode (int signal, int si_code); + +/** + * @} plcrash_async_signal_info + */ \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker.h b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker.h new file mode 100755 index 0000000..698c41b --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker.h @@ -0,0 +1,206 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import +#import + +#import +#import +#import + +#import + +/** + * @internal + * @defgroup plframe_backtrace Backtrace Frame Walker + * @ingroup plcrash_internal + * + * Implements a portable backtrace API. The API is fully async safe, and may be called + * from any signal handler. + * + * The API is modeled on that of the libunwind library. + * + * @{ + */ + +/** + * Error return codes. + */ +typedef enum { + /** Success */ + PLFRAME_ESUCCESS = 0, + + /** Unknown error (if found, is a bug) */ + PLFRAME_EUNKNOWN, + + /** No more frames */ + PLFRAME_ENOFRAME, + + /** Bad frame */ + PLFRAME_EBADFRAME, + + /** Unsupported operation */ + PLFRAME_ENOTSUP, + + /** Invalid argument */ + PLFRAME_EINVAL, + + /** Internal error */ + PLFRAME_INTERNAL, + + /** Bad register number */ + PLFRAME_EBADREG +} plframe_error_t; + + +/** Register number type */ +typedef int plframe_regnum_t; + +#import "PLCrashFrameWalker_x86_64.h" +#import "PLCrashFrameWalker_i386.h" +#import "PLCrashFrameWalker_arm.h" +#import "PLCrashFrameWalker_ppc.h" + +/** Platform-specific length of stack to be read when iterating frames */ +#define PLFRAME_STACKFRAME_LEN PLFRAME_PDEF_STACKFRAME_LEN + +/** + * @internal + * Frame cursor context. + */ +typedef struct plframe_cursor { + /** true if this is the initial frame */ + bool init_frame; + + /** Thread context */ + ucontext_t *uap; + + /** Stack frame data */ + void *fp[PLFRAME_STACKFRAME_LEN]; + + // for thread-initialized cursors + /** Generated ucontext_t */ + ucontext_t _uap_data; + + /** Generated mcontext_t */ + _STRUCT_MCONTEXT _mcontext_data; +} plframe_cursor_t; + +/** + * General pseudo-registers common across platforms. + * + * Platform registers must be allocated starting at a 0 + * index, with no breaks. The last valid register number must + * be provided as PLFRAME_PDEF_LAST_REG. + */ +typedef enum { + /** Instruction pointer */ + PLFRAME_REG_IP = PLFRAME_PDEF_REG_IP, + + /** Last register */ + PLFRAME_REG_LAST = PLFRAME_PDEF_LAST_REG +} plframe_gen_regnum_t; + + +/** Platform word type */ +typedef plframe_pdef_greg_t plframe_greg_t; + +/** Platform floating point register type */ +typedef plframe_pdef_fpreg_t plframe_fpreg_t; + + +/** + * @internal + * State for test threads */ +typedef struct plframe_test_thread { + /** Running test thread */ + pthread_t thread; + + /** Thread signaling lock */ + pthread_mutex_t lock; + + /** Thread signaling (used to inform waiting callee that thread is active) */ + pthread_cond_t cond; +} plframe_test_thead_t; + + +/* Shared functions */ +const char *plframe_strerror (plframe_error_t error); +kern_return_t plframe_read_addr (const void *source, void *dest, size_t len); + +void plframe_test_thread_spawn (plframe_test_thead_t *args); +void plframe_test_thread_stop (plframe_test_thead_t *args); + +/* Platform specific funtions */ + +/** + * Initialize the frame cursor. + * + * @param cursor Cursor record to be initialized. + * @param uap The context to use for cursor initialization. + * + * @return Returns PLFRAME_ESUCCESS on success, or standard plframe_error_t code if an error occurs. + */ +plframe_error_t plframe_cursor_init (plframe_cursor_t *cursor, ucontext_t *uap); + +/** + * Initialize the frame cursor by acquiring state from the provided mach thread. + * + * @param cursor Cursor record to be initialized. + * @param thread The thread to use for cursor initialization. + * + * @return Returns PLFRAME_ESUCCESS on success, or standard plframe_error_t code if an error occurs. + */ +plframe_error_t plframe_cursor_thread_init (plframe_cursor_t *cursor, thread_t thread); + +/** + * Fetch the next cursor. + * + * @param cursor A cursor instance initialized with plframe_cursor_init(); + * @return Returns PLFRAME_ESUCCESS on success, PLFRAME_ENOFRAME is no additional frames are available, or a standard plframe_error_t code if an error occurs. + */ +plframe_error_t plframe_cursor_next (plframe_cursor_t *cursor); + +/** + * Get a register's name. + */ +const char *plframe_get_regname (plframe_regnum_t regnum); + +/** + * Get a register value. + */ +plframe_error_t plframe_get_reg (plframe_cursor_t *cursor, plframe_regnum_t regnum, plframe_greg_t *reg); + +/** + * Get a floating point register value. + */ +plframe_error_t plframe_get_freg (plframe_cursor_t *cursor, plframe_regnum_t regnum, plframe_fpreg_t *fpreg); + +/** + * @} plcrash_framewalker + */ \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_arm.h b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_arm.h new file mode 100755 index 0000000..a1a9239 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_arm.h @@ -0,0 +1,81 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifdef __arm__ + +// 32-bit +typedef uintptr_t plframe_pdef_greg_t; +typedef uintptr_t plframe_pdef_fpreg_t; + +// Data we'll read off the stack frame +#define PLFRAME_PDEF_STACKFRAME_LEN 2 + +/** + * @internal + * Arm registers + */ +typedef enum { + /* + * General + */ + + PLFRAME_ARM_R0 = 0, + PLFRAME_ARM_R1, + PLFRAME_ARM_R2, + PLFRAME_ARM_R3, + PLFRAME_ARM_R4, + PLFRAME_ARM_R5, + PLFRAME_ARM_R6, + PLFRAME_ARM_R7, + PLFRAME_ARM_R8, + PLFRAME_ARM_R9, + PLFRAME_ARM_R10, + PLFRAME_ARM_R11, + PLFRAME_ARM_R12, + + /* stack pointer (r13) */ + PLFRAME_ARM_SP, + + /* link register (r14) */ + PLFRAME_ARM_LR, + + /** Program counter (r15) */ + PLFRAME_ARM_PC, + + /** Current program status register */ + PLFRAME_ARM_CPSR, + + /* Common registers */ + + PLFRAME_PDEF_REG_IP = PLFRAME_ARM_PC, + + /** Last register */ + PLFRAME_PDEF_LAST_REG = PLFRAME_ARM_CPSR +} plframe_arm_regnum_t; + +#endif diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_i386.h b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_i386.h new file mode 100755 index 0000000..c5bdc8d --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_i386.h @@ -0,0 +1,105 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifdef __i386__ + +// 32-bit +typedef uintptr_t plframe_pdef_greg_t; +typedef uintptr_t plframe_pdef_fpreg_t; + +// Data we'll read off the stack frame +#define PLFRAME_PDEF_STACKFRAME_LEN 2 + +/** + * @internal + * x86 registers, as defined by the System V ABI, IA32 Supplement. + */ +typedef enum { + /* + * General + */ + + /** Return value */ + PLFRAME_X86_EAX = 0, + + /** Dividend register */ + PLFRAME_X86_EDX, + + /** Count register */ + PLFRAME_X86_ECX, + + /** Local register variable */ + PLFRAME_X86_EBX, + + /** Stack frame pointer */ + PLFRAME_X86_EBP, + + /** Local register variable */ + PLFRAME_X86_ESI, + + /** Local register variable */ + PLFRAME_X86_EDI, + + /** Stack pointer */ + PLFRAME_X86_ESP, + + /** Instruction pointer */ + PLFRAME_X86_EIP, + + /** Flags */ + PLFRAME_X86_EFLAGS, + + /* Scratcn */ + PLFRAME_X86_TRAPNO, + + + /* + * Segment Registers + */ + /** Segment register */ + PLFRAME_X86_CS, + + /** Segment register */ + PLFRAME_X86_DS, + + /** Segment register */ + PLFRAME_X86_ES, + + /** Segment register */ + PLFRAME_X86_FS, + + /** Segment register */ + PLFRAME_X86_GS, + + PLFRAME_PDEF_REG_IP = PLFRAME_X86_EIP, + + /** Last register */ + PLFRAME_PDEF_LAST_REG = PLFRAME_X86_GS +} plframe_x86_regnum_t; + +#endif /* __i386__ */ diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_ppc.h b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_ppc.h new file mode 100755 index 0000000..40b9c77 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_ppc.h @@ -0,0 +1,107 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifdef __ppc__ + +// 32-bit +typedef uintptr_t plframe_pdef_greg_t; +typedef uintptr_t plframe_pdef_fpreg_t; + +// Data we'll read off the stack frame +#define PLFRAME_PDEF_STACKFRAME_LEN 3 + +/** + * @internal + * PPC Registers + */ +typedef enum { + /** Instruction address register (PC) */ + PLFRAME_PPC_SRR0 = 0, + + /** Machine state register (supervisor) */ + PLFRAME_PPC_SRR1, + + PLFRAME_PPC_DAR, + PLFRAME_PPC_DSISR, + + PLFRAME_PPC_R0, + PLFRAME_PPC_R1, + PLFRAME_PPC_R2, + PLFRAME_PPC_R3, + PLFRAME_PPC_R4, + PLFRAME_PPC_R5, + PLFRAME_PPC_R6, + PLFRAME_PPC_R7, + PLFRAME_PPC_R8, + PLFRAME_PPC_R9, + PLFRAME_PPC_R10, + PLFRAME_PPC_R11, + PLFRAME_PPC_R12, + PLFRAME_PPC_R13, + PLFRAME_PPC_R14, + PLFRAME_PPC_R15, + PLFRAME_PPC_R16, + PLFRAME_PPC_R17, + PLFRAME_PPC_R18, + PLFRAME_PPC_R19, + PLFRAME_PPC_R20, + PLFRAME_PPC_R21, + PLFRAME_PPC_R22, + PLFRAME_PPC_R23, + PLFRAME_PPC_R24, + PLFRAME_PPC_R25, + PLFRAME_PPC_R26, + PLFRAME_PPC_R27, + PLFRAME_PPC_R28, + PLFRAME_PPC_R29, + PLFRAME_PPC_R30, + PLFRAME_PPC_R31, + + /** Condition register */ + PLFRAME_PPC_CR, + + /** User integer exception register */ + PLFRAME_PPC_XER, + + /** Link register */ + PLFRAME_PPC_LR, + + /** Count register */ + PLFRAME_PPC_CTR, + + /** Vector save reigster */ + PLFRAME_PPC_VRSAVE, + + + PLFRAME_PDEF_REG_IP = PLFRAME_PPC_SRR0, + + /* Last register */ + PLFRAME_PDEF_LAST_REG = PLFRAME_PPC_VRSAVE +} plframe_ppc_regnum_t; + +#endif /* __ppc__ */ diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_x86_64.h b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_x86_64.h new file mode 100755 index 0000000..2c9a97c --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashFrameWalker_x86_64.h @@ -0,0 +1,114 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifdef __x86_64__ + +// 64-bit +typedef uint64_t plframe_pdef_greg_t; +typedef uint64_t plframe_pdef_fpreg_t; + +// Data we'll read off the stack frame +#define PLFRAME_PDEF_STACKFRAME_LEN 2 + +/** + * @internal + * x86-64 Registers + */ +typedef enum { + /* + * General + */ + + /** First return register. */ + PLFRAME_X86_64_RAX = 0, + + /** Local register variable. */ + PLFRAME_X86_64_RBX, + + /** Fourth integer function argument. */ + PLFRAME_X86_64_RCX, + + /** Third function argument. Second return register. */ + PLFRAME_X86_64_RDX, + + /** First function argument. */ + PLFRAME_X86_64_RDI, + + /** Second function argument. */ + PLFRAME_X86_64_RSI, + + /** Optional stack frame pointer. */ + PLFRAME_X86_64_RBP, + + /** Stack pointer. */ + PLFRAME_X86_64_RSP, + + /** Temporary register. */ + PLFRAME_X86_64_R10, + + /** Callee-saved register. */ + PLFRAME_X86_64_R11, + + /** Callee-saved register. */ + PLFRAME_X86_64_R12, + + /** Callee-saved register. */ + PLFRAME_X86_64_R13, + + /** Callee-saved register. */ + PLFRAME_X86_64_R14, + + /** Callee-saved register. */ + PLFRAME_X86_64_R15, + + /** Instruction pointer */ + PLFRAME_X86_64_RIP, + + /** Flags */ + PLFRAME_X86_64_RFLAGS, + + /* + * Segment Registers + */ + + /** Segment register */ + PLFRAME_X86_64_CS, + + /** Segment register */ + PLFRAME_X86_64_FS, + + /** Segment register */ + PLFRAME_X86_64_GS, + + PLFRAME_PDEF_REG_IP = PLFRAME_X86_64_RIP, + + /** Last register */ + PLFRAME_PDEF_LAST_REG = PLFRAME_X86_64_GS +} plframe_x86_64_regnum_t; + +#endif /* __x86_64__ */ diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashLogWriter.h b/Projectfiles/lib/CrittercismSDK/PLCrashLogWriter.h new file mode 100755 index 0000000..33a2abb --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashLogWriter.h @@ -0,0 +1,147 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2010 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import +#import + +#import "PLCrashAsync.h" +#import "PLCrashAsyncImage.h" + +/** + * @internal + * @defgroup plcrash_log_writer Crash Log Writer + * @ingroup plcrash_internal + * + * Implements an async-safe, zero allocation crash log writer C API, intended + * to be called from the crash log signal handler. + * + * @{ + */ + +/** + * @internal + * + * Crash log writer context. + */ +typedef struct plcrash_log_writer { + /** System data */ + struct { + /** The host OS version. */ + char *version; + + /** The host OS build number. This may be NULL. */ + char *build; + } system_info; + + /* Machine data */ + struct { + /** The host model (may be NULL). */ + char *model; + + /** The host CPU type. */ + uint64_t cpu_type; + + /** The host CPU subtype. */ + uint64_t cpu_subtype; + + /** The total number of physical cores */ + uint32_t processor_count; + + /** The total number of logical cores */ + uint32_t logical_processor_count; + } machine_info; + + /** Application data */ + struct { + /** Application identifier */ + char *app_identifier; + + /** Application version */ + char *app_version; + } application_info; + + /** Process data */ + struct { + /** Process name (may be null) */ + char *process_name; + + /** Process ID */ + pid_t process_id; + + /** Process path (may be null) */ + char *process_path; + + /** Parent process name (may be null) */ + char *parent_process_name; + + /** Parent process ID */ + pid_t parent_process_id; + + /** If false, the reporting process is being run under process emulation (such as Rosetta). */ + bool native; + } process_info; + + /** Binary image data */ + struct { + /** The list of the processes' loaded images, as provided by dyld. */ + plcrash_async_image_list_t image_list; + } image_info; + + /** Uncaught exception (if any) */ + struct { + /** Flag specifying wether an uncaught exception is available. */ + bool has_exception; + + /** Exception name (may be null) */ + char *name; + + /** Exception reason (may be null) */ + char *reason; + + /** The original exception call stack (may be null) */ + void **callstack; + + /** Call stack frame count, or 0 if the call stack is unavailable */ + size_t callstack_count; + } uncaught_exception; +} plcrash_log_writer_t; + + +plcrash_error_t plcrash_log_writer_init (plcrash_log_writer_t *writer, NSString *app_identifier, NSString *app_version); +void plcrash_log_writer_set_exception (plcrash_log_writer_t *writer, NSException *exception); + +void plcrash_log_writer_add_image (plcrash_log_writer_t *writer, const void *header_addr); +void plcrash_log_writer_remove_image (plcrash_log_writer_t *writer, const void *header_addr); + +plcrash_error_t plcrash_log_writer_write (plcrash_log_writer_t *writer, plcrash_async_file_t *file, siginfo_t *siginfo, ucontext_t *crashctx); +plcrash_error_t plcrash_log_writer_close (plcrash_log_writer_t *writer); +void plcrash_log_writer_free (plcrash_log_writer_t *writer); + +/** + * @} plcrash_log_writer + */ diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashLogWriterEncoding.h b/Projectfiles/lib/CrittercismSDK/PLCrashLogWriterEncoding.h new file mode 100755 index 0000000..dbf0747 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashLogWriterEncoding.h @@ -0,0 +1,45 @@ +/* + * Copyright 2008, Dave Benson. + * Copyright 2008 - 2009 Plausible Labs Cooperative, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with + * the License. You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 Unless + * required by applicable law or agreed to in writing, + * software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "PLCrashAsync.h" + +typedef enum { + PLPROTOBUF_C_TYPE_INT32, + PLPROTOBUF_C_TYPE_SINT32, + PLPROTOBUF_C_TYPE_SFIXED32, + PLPROTOBUF_C_TYPE_INT64, + PLPROTOBUF_C_TYPE_SINT64, + PLPROTOBUF_C_TYPE_SFIXED64, + PLPROTOBUF_C_TYPE_UINT32, + PLPROTOBUF_C_TYPE_FIXED32, + PLPROTOBUF_C_TYPE_UINT64, + PLPROTOBUF_C_TYPE_FIXED64, + PLPROTOBUF_C_TYPE_FLOAT, + PLPROTOBUF_C_TYPE_DOUBLE, + PLPROTOBUF_C_TYPE_BOOL, + PLPROTOBUF_C_TYPE_ENUM, + PLPROTOBUF_C_TYPE_STRING, + PLPROTOBUF_C_TYPE_BYTES, + //PLPROTOBUF_C_TYPE_GROUP, // NOT SUPPORTED + PLPROTOBUF_C_TYPE_MESSAGE, +} PLProtobufCType; + +typedef struct PLProtobufCBinaryData { + size_t len; + void *data; +} PLProtobufCBinaryData; + +size_t plcrash_writer_pack (plcrash_async_file_t *file, uint32_t field_id, PLProtobufCType field_type, const void *value); \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReport.h b/Projectfiles/lib/CrittercismSDK/PLCrashReport.h new file mode 100755 index 0000000..f229fd0 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReport.h @@ -0,0 +1,169 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2010 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import +#import "PLCrashReportSystemInfo.h" +#import "PLCrashReportMachineInfo.h" +#import "PLCrashReportApplicationInfo.h" +#import "PLCrashReportProcessInfo.h" +#import "PLCrashReportSignalInfo.h" +#import "PLCrashReportThreadInfo.h" +#import "PLCrashReportBinaryImageInfo.h" +#import "PLCrashReportExceptionInfo.h" + +/** + * @ingroup constants + * Crash file magic identifier */ +#define PLCRASH_REPORT_FILE_MAGIC "plcrash" + +/** + * @ingroup constants + * Crash format version byte identifier. Will not change outside of the introduction of + * an entirely new crash log format. */ +#define PLCRASH_REPORT_FILE_VERSION 1 + +/** + * @ingroup types + * Crash log file header format. + * + * Crash log files start with 7 byte magic identifier (#PLCRASH_REPORT_FILE_MAGIC), + * followed by a single unsigned byte version number (#PLCRASH_REPORT_FILE_VERSION). + * The crash log message format itself is extensible, so this version number will only + * be incremented in the event of an incompatible encoding or format change. + */ +struct PLCrashReportFileHeader { + /** Crash log magic identifier, not NULL terminated */ + const char magic[7]; + + /** Crash log encoding/format version */ + const uint8_t version; + + /** File data */ + const uint8_t data[]; +} __attribute__((packed)); + + +/** + * @internal + * Private decoder instance variables (used to hide the underlying protobuf parser). + */ +typedef struct _PLCrashReportDecoder _PLCrashReportDecoder; + +@interface PLCrashReport : NSObject { +@private + /** Private implementation variables (used to hide the underlying protobuf parser) */ + _PLCrashReportDecoder *_decoder; + + /** System info */ + PLCrashReportSystemInfo *_systemInfo; + + /** Machine info */ + PLCrashReportMachineInfo *_machineInfo; + + /** Application info */ + PLCrashReportApplicationInfo *_applicationInfo; + + /** Process info */ + PLCrashReportProcessInfo *_processInfo; + + /** Signal info */ + PLCrashReportSignalInfo *_signalInfo; + + /** Thread info (PLCrashReportThreadInfo instances) */ + NSArray *_threads; + + /** Binary images (PLCrashReportBinaryImageInfo instances */ + NSArray *_images; + + /** Exception information (may be nil) */ + PLCrashReportExceptionInfo *_exceptionInfo; +} + +- (id) initWithData: (NSData *) encodedData error: (NSError **) outError; + +- (PLCrashReportBinaryImageInfo *) imageForAddress: (uint64_t) address; + +/** + * System information. + */ +@property(nonatomic, readonly) PLCrashReportSystemInfo *systemInfo; + +/** + * YES if machine information is available. + */ +@property(nonatomic, readonly) BOOL hasMachineInfo; + +/** + * Machine information. Only available in later (v1.1+) crash report format versions. If not available, + * will be nil. + */ +@property(nonatomic, readonly) PLCrashReportMachineInfo *machineInfo; + +/** + * Application information. + */ +@property(nonatomic, readonly) PLCrashReportApplicationInfo *applicationInfo; + +/** + * YES if process information is available. + */ +@property(nonatomic, readonly) BOOL hasProcessInfo; + +/** + * Process information. Only available in later (v1.1+) crash report format versions. If not available, + * will be nil. + */ +@property(nonatomic, readonly) PLCrashReportProcessInfo *processInfo; + +/** + * Signal information. This provides the signal and signal code of the fatal signal. + */ +@property(nonatomic, readonly) PLCrashReportSignalInfo *signalInfo; + +/** + * Thread information. Returns a list of PLCrashReportThreadInfo instances. + */ +@property(nonatomic, readonly) NSArray *threads; + +/** + * Binary image information. Returns a list of PLCrashReportBinaryImageInfo instances. + */ +@property(nonatomic, readonly) NSArray *images; + +/** + * YES if exception information is available. + */ +@property(nonatomic, readonly) BOOL hasExceptionInfo; + +/** + * Exception information. Only available if a crash was caused by an uncaught exception, + * otherwise nil. + */ +@property(nonatomic, readonly) PLCrashReportExceptionInfo *exceptionInfo; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportApplicationInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportApplicationInfo.h new file mode 100755 index 0000000..2c2ab97 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportApplicationInfo.h @@ -0,0 +1,53 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +@interface PLCrashReportApplicationInfo : NSObject { +@private + /** Application identifier */ + NSString *_applicationIdentifier; + + /** Application version */ + NSString *_applicationVersion; +} + +- (id) initWithApplicationIdentifier: (NSString *) applicationIdentifier + applicationVersion: (NSString *) applicationVersion; + +/** + * The application identifier. This is usually the application's CFBundleIdentifier value. + */ +@property(nonatomic, readonly) NSString *applicationIdentifier; + +/** + * The application version. This is usually the application's CFBundleVersion value. + */ +@property(nonatomic, readonly) NSString *applicationVersion; + +@end \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportBinaryImageInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportBinaryImageInfo.h new file mode 100755 index 0000000..339fdbb --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportBinaryImageInfo.h @@ -0,0 +1,90 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import +#import "PLCrashReportProcessorInfo.h" + +@interface PLCrashReportBinaryImageInfo : NSObject { +@private + /** Code type */ + PLCrashReportProcessorInfo *_processorInfo; + + /** Base image address */ + uint64_t _baseAddress; + + /** Image segment size */ + uint64_t _imageSize; + + /** Name of binary image */ + NSString *_imageName; + + /** If the UUID is available */ + BOOL _hasImageUUID; + + /** 128-bit object UUID. May be nil. */ + NSString *_imageUUID; +} + +- (id) initWithCodeType: (PLCrashReportProcessorInfo *) processorInfo + baseAddress: (uint64_t) baseAddress + size: (uint64_t) imageSize + name: (NSString *) imageName + uuid: (NSData *) uuid; + +/** + * Image code type, or nil if unavailable. + */ +@property(nonatomic, readonly) PLCrashReportProcessorInfo *codeType; + +/** + * Image base address. + */ +@property(nonatomic, readonly) uint64_t imageBaseAddress; + +/** + * Segment size. + */ +@property(nonatomic, readonly) uint64_t imageSize; + +/** + * Image name (absolute path) + */ +@property(nonatomic, readonly) NSString *imageName; + + +/** + * YES if this image has an associated UUID. + */ +@property(nonatomic, readonly) BOOL hasImageUUID; + +/** + * 128-bit object UUID (matches Mach-O DWARF dSYM files). May be nil if unavailable. + */ +@property(nonatomic, readonly) NSString *imageUUID; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportExceptionInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportExceptionInfo.h new file mode 100755 index 0000000..623b1d4 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportExceptionInfo.h @@ -0,0 +1,65 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import +#import "PLCrashReportThreadInfo.h" + + +@interface PLCrashReportExceptionInfo : NSObject { +@private + /** Name */ + NSString *_name; + + /** Reason */ + NSString *_reason; + + /** Ordered list of PLCrashReportStackFrame instances, or nil if unavailable. */ + NSArray *_stackFrames; +} + +- (id) initWithExceptionName: (NSString *) name reason: (NSString *) reason; + +- (id) initWithExceptionName: (NSString *) name + reason: (NSString *) reason + stackFrames: (NSArray *) stackFrames; + +/** + * The exception name. + */ +@property(nonatomic, readonly) NSString *exceptionName; + +/** + * The exception reason. + */ +@property(nonatomic, readonly) NSString *exceptionReason; + +/* The exception's original call stack, as an array of PLCrashReportStackFrameInfo instances, or nil if unavailable. + * This may be preserved across rethrow of an exception, and can be used to determine the original call stack. */ +@property(nonatomic, readonly) NSArray *stackFrames; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportFormatter.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportFormatter.h new file mode 100755 index 0000000..a32a243 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportFormatter.h @@ -0,0 +1,51 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2010 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +#import "PLCrashReport.h" + +/** + * A crash report formatter accepts a PLCrashReport instance, formats it according to implementation-specified rules, + * (such as implementing text output support), and returns the result. + */ +@protocol PLCrashReportFormatter + +/** + * Format the provided @a report. + * + * @param report Report to be formatted. + * @param outError A pointer to an NSError object variable. If an error occurs, this pointer will contain an error + * object indicating why the pending crash report could not be formatted. If no error occurs, this parameter will + * be left unmodified. You may specify nil for this parameter, and no error information will be provided. + * + * @return Returns the formatted report data on success, or nil on failure. + */ +- (NSData *) formatReport: (PLCrashReport *) report error: (NSError **) outError; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportMachineInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportMachineInfo.h new file mode 100755 index 0000000..58c4baa --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportMachineInfo.h @@ -0,0 +1,73 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +#import "PLCrashReportProcessorInfo.h" + +@interface PLCrashReportMachineInfo : NSObject { +@private + /** The hardware model name (eg, MacBookPro6,1). This may be unavailable, and this property will be nil. */ + NSString *_modelName; + + /** The processor type. */ + PLCrashReportProcessorInfo *_processorInfo; + + /* The number of actual physical processor cores. */ + NSUInteger _processorCount; + + /* The number of logical processors. */ + NSUInteger _logicalProcessorCount; +} + +- (id) initWithModelName: (NSString *) modelName + processorInfo: (PLCrashReportProcessorInfo *) processorInfo + processorCount: (NSUInteger) processorCount + logicalProcessorCount: (NSUInteger) logicalProcessorCount; + +/** The hardware model name (eg, MacBookPro6,1). This may be unavailable, and this property will be nil. */ +@property(nonatomic, readonly) NSString *modelName; + +/** The processor type. */ +@property(nonatomic, readonly) PLCrashReportProcessorInfo *processorInfo; + +/* + * The number of actual physical processor cores. Note that the number of active processors may be managed by the + * operating system's power management system, and this value may not reflect the number of active + * processors at the time of the crash. + */ +@property(nonatomic, readonly) NSUInteger processorCount; + +/* + * The number of logical processors. Note that the number of active processors may be managed by the + * operating system's power management system, and this value may not reflect the number of active + * processors at the time of the crash. + */ +@property(nonatomic, readonly) NSUInteger logicalProcessorCount; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportProcessInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportProcessInfo.h new file mode 100755 index 0000000..ffc81ed --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportProcessInfo.h @@ -0,0 +1,92 @@ +/* + * Author: Damian Morris + * + * Copyright (c) 2010 MOSO Corporation, Pty Ltd. + * Copyright (c) 2010 Plausible Labs Cooperative, Inc. + * + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +@interface PLCrashReportProcessInfo : NSObject { +@private + /** Process name */ + NSString *_processName; + + /** Process ID */ + NSUInteger _processID; + + /** Process path */ + NSString* _processPath; + + /** Parent process name */ + NSString *_parentProcessName; + + /** Parent process ID */ + NSUInteger _parentProcessID; + + /** If false, the process is being run via process-level CPU emulation (such as Rosetta). */ + BOOL _native; +} + +- (id) initWithProcessName: (NSString *) processName + processID: (NSUInteger) processID + processPath: (NSString *) processPath + parentProcessName: (NSString *) parentProcessName + parentProcessID: (NSUInteger) parentProcessID + native: (BOOL) native; + +/** + * The process name. This value may not be included in the crash report, in which case this property + * will be nil. + */ +@property(nonatomic, readonly) NSString *processName; + +/** + * The process ID. + */ +@property(nonatomic, readonly) NSUInteger processID; + +/** + * The path to the process executable. This value may not be included in the crash report, in which case this property + * will be nil. + */ +@property(nonatomic, readonly) NSString *processPath; + +/** + * The parent process name. This value may not be included in the crash report, in which case this property + * will be nil. + */ +@property(nonatomic, readonly) NSString *parentProcessName; + +/** + * The parent process ID. + */ +@property(nonatomic, readonly) NSUInteger parentProcessID; + +/** The process' native execution status. If false, the process is being run via process-level CPU emulation (such as Rosetta). */ +@property(nonatomic, readonly) BOOL native; + +@end \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportProcessorInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportProcessorInfo.h new file mode 100755 index 0000000..af027be --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportProcessorInfo.h @@ -0,0 +1,74 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import +#import + +/** + * @ingroup constants + * + * The type encodings supported for CPU types and subtypes. Currently only Apple + * Mach-O defined encodings are supported. + * + * @internal + * These enum values match the protobuf values. Keep them synchronized. + */ +typedef enum { + /** Unknown cpu type encoding. */ + PLCrashReportProcessorTypeEncodingUnknown = 0, + + /** Apple Mach-defined processor types. */ + PLCrashReportProcessorTypeEncodingMach = 1 +} PLCrashReportProcessorTypeEncoding; + +@interface PLCrashReportProcessorInfo : NSObject { +@private + /** Type encoding */ + PLCrashReportProcessorTypeEncoding _typeEncoding; + + /** CPU type */ + uint64_t _type; + + /** CPU subtype */ + uint64_t _subtype; +} + +- (id) initWithTypeEncoding: (PLCrashReportProcessorTypeEncoding) typeEncoding + type: (uint64_t) type + subtype: (uint64_t) subtype; + +/** The CPU type encoding. */ +@property(nonatomic, readonly) PLCrashReportProcessorTypeEncoding typeEncoding; + +/** The CPU type. */ +@property(nonatomic, readonly) uint64_t type; + +/** The CPU subtype. */ +@property(nonatomic, readonly) uint64_t subtype; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportSignalInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportSignalInfo.h new file mode 100755 index 0000000..2c5c5fe --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportSignalInfo.h @@ -0,0 +1,60 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +@interface PLCrashReportSignalInfo : NSObject { +@private + /** Signal name */ + NSString *_name; + + /** Signal code */ + NSString *_code; + + /** Fauling instruction or address */ + uint64_t _address; +} + +- (id) initWithSignalName: (NSString *) name code: (NSString *) code address: (uint64_t) address; + +/** + * The signal name. + */ +@property(nonatomic, readonly) NSString *name; + +/** + * The signal code. + */ +@property(nonatomic, readonly) NSString *code; + +/** + * The faulting instruction or address. + */ +@property(nonatomic, readonly) uint64_t address; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportSystemInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportSystemInfo.h new file mode 100755 index 0000000..f4cf7c1 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportSystemInfo.h @@ -0,0 +1,158 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +/** + * @ingroup constants + * + * Indicates the Operating System under which a Crash Log was generated. + * + * @internal + * These enum values match the protobuf values. Keep them synchronized. + */ +typedef enum { + /** Mac OS X. */ + PLCrashReportOperatingSystemMacOSX = 0, + + /** iPhone OS */ + PLCrashReportOperatingSystemiPhoneOS = 1, + + /** iPhone Simulator (Mac OS X with additional simulator-specific runtime libraries) */ + PLCrashReportOperatingSystemiPhoneSimulator = 2, + + /** Unknown operating system */ + PLCrashReportOperatingSystemUnknown = 3, +} PLCrashReportOperatingSystem; + +/** + * @ingroup constants + * + * Indicates the architecture under which a Crash Log was generated. + * + * @deprecated The architecture value has been deprecated in v1.1 and later crash reports. All new reports + * will make use of the new PLCrashReportProcessorInfo CPU type encodings. + * + * @internal + * These enum values match the protobuf values. Keep them synchronized. + */ +typedef enum { + /** x86-32. */ + PLCrashReportArchitectureX86_32 = 0, + + /** x86-64 */ + PLCrashReportArchitectureX86_64 = 1, + + /** ARMv6 */ + PLCrashReportArchitectureARMv6 = 2, + + /** + * ARMv6 + * @deprecated + * @sa PLCrashReportArchitectureARMv6 + */ + PLCrashReportArchitectureARM = PLCrashReportArchitectureARMv6, + + /** PPC */ + PLCrashReportArchitecturePPC = 3, + + /** PPC64 */ + PLCrashReportArchitecturePPC64 = 4, + + /** ARMv7 */ + PLCrashReportArchitectureARMv7 = 5, + + /** Unknown */ + PLCrashReportArchitectureUnknown = 6 +} PLCrashReportArchitecture; + + +extern PLCrashReportOperatingSystem PLCrashReportHostOperatingSystem; +extern PLCrashReportArchitecture PLCrashReportHostArchitecture; + +@interface PLCrashReportSystemInfo : NSObject { +@private + /** Operating system */ + PLCrashReportOperatingSystem _operatingSystem; + + /** Operating system version */ + NSString *_osVersion; + + /** OS build. May be nil. */ + NSString *_osBuild; + + /** Architecture */ + PLCrashReportArchitecture _architecture; + + /** Date crash report was generated. May be nil if the date is unknown. */ + NSDate *_timestamp; + + /** Memory usage in bytes */ + NSUInteger _memory_usage; + + /** Disk space free in bytes */ + NSUInteger _disk_space_free; +} + +- (id) initWithOperatingSystem: (PLCrashReportOperatingSystem) operatingSystem + operatingSystemVersion: (NSString *) operatingSystemVersion + architecture: (PLCrashReportArchitecture) architecture + timestamp: (NSDate *) timestamp + memory_usage: (NSUInteger) memory_usage + disk_space_free: (NSUInteger) disk_space_free; + +- (id) initWithOperatingSystem: (PLCrashReportOperatingSystem) operatingSystem + operatingSystemVersion: (NSString *) operatingSystemVersion + operatingSystemBuild: (NSString *) operatingSystemBuild + architecture: (PLCrashReportArchitecture) architecture + timestamp: (NSDate *) timestamp + memory_usage: (NSUInteger) memory_usage + disk_space_free: (NSUInteger) disk_space_free; + +/** The operating system. */ +@property(nonatomic, readonly) PLCrashReportOperatingSystem operatingSystem; + +/** The operating system's release version. */ +@property(nonatomic, readonly) NSString *operatingSystemVersion; + +/** The operating system's build identifier (eg, 10J869). This may be unavailable, and this property will be nil. */ +@property(nonatomic, readonly) NSString *operatingSystemBuild; + +/** Architecture. */ +@property(nonatomic, readonly) PLCrashReportArchitecture architecture; + +/** Date and time that the crash report was generated. This may be unavailable, and this property will be nil. */ +@property(nonatomic, readonly) NSDate *timestamp; + +/** Memory usage in bytes */ +@property(nonatomic, readonly) NSUInteger memory_usage; + +/** Disk space free in bytes */ +@property(nonatomic, readonly) NSUInteger disk_space_free; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportTextFormatter.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportTextFormatter.h new file mode 100755 index 0000000..61e6689 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportTextFormatter.h @@ -0,0 +1,62 @@ +/* + * Authors: + * Landon Fuller + * Damian Morris + * + * Copyright (c) 2008-2010 Plausible Labs Cooperative, Inc. + * Copyright (c) 2010 MOSO Corporation, Pty Ltd. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +#import + +#import "PLCrashReportFormatter.h" + +/** + * Supported text output formats. + * + * @ingroup enums + */ +typedef enum { + /** An iOS-compatible crash log text format. Compatible with the crash logs generated by the device and available + * through iTunes Connect. */ + PLCrashReportTextFormatiOS = 0 +} PLCrashReportTextFormat; + + +@interface PLCrashReportTextFormatter : NSObject { +@private + /** Text output format. */ + PLCrashReportTextFormat _textFormat; + + /** Encoding to use for string output. */ + NSStringEncoding _stringEncoding; +} + ++ (NSString *) stringValueForCrashReport: (PLCrashReport *) report withTextFormat: (PLCrashReportTextFormat) textFormat; + +- (id) initWithTextFormat: (PLCrashReportTextFormat) textFormat stringEncoding: (NSStringEncoding) stringEncoding; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReportThreadInfo.h b/Projectfiles/lib/CrittercismSDK/PLCrashReportThreadInfo.h new file mode 100755 index 0000000..5b32243 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReportThreadInfo.h @@ -0,0 +1,135 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +@interface PLCrashReportStackFrameInfo : NSObject { +@private + /** Frame instruction pointer. */ + uint64_t _instructionPointer; + NSString *_fileName; + NSString *_symbolName; + uint64_t _symbolAddress; +} + +- (id) initWithInstructionPointer: (uint64_t) instructionPointer + andFileName: (NSString *) fileName + andSymbolName: (NSString *) symbolName + andSymbolAddress: (uint64_t) symbolAddress; + +/** + * Frame's instruction pointer. + */ +@property(nonatomic, readonly) uint64_t instructionPointer; + +/** + * Frame's file name, if any. + */ +@property(nonatomic, readonly) NSString *fileName; + +/** + * Frame's symbol name, if any. + */ +@property(nonatomic, readonly) NSString *symbolName; + +/** + * Frame's symbol address. + */ +@property(nonatomic, readonly) uint64_t symbolAddress; + +@end + + +@interface PLCrashReportRegisterInfo : NSObject { +@private + /** Register name */ + NSString *_registerName; + + /** Register value */ + uint64_t _registerValue; +} + +- (id) initWithRegisterName: (NSString *) registerName registerValue: (uint64_t) registerValue; + +/** + * Register name. + */ +@property(nonatomic, readonly) NSString *registerName; + +/** + * Register value. + */ +@property(nonatomic, readonly) uint64_t registerValue; + +@end + + +@interface PLCrashReportThreadInfo : NSObject { +@private + /** The thread number. Should be unique within a given crash log. */ + NSInteger _threadNumber; + + /** Ordered list of PLCrashReportStackFrame instances */ + NSArray *_stackFrames; + + /** YES if this thread crashed. */ + BOOL _crashed; + + /** List of PLCrashReportRegister instances. Will be empty if _crashed is NO. */ + NSArray *_registers; +} + +- (id) initWithThreadNumber: (NSInteger) threadNumber + stackFrames: (NSArray *) stackFrames + crashed: (BOOL) crashed + registers: (NSArray *) registers; + +/** + * Application thread number. + */ +@property(nonatomic, readonly) NSInteger threadNumber; + +/** + * Thread backtrace. Provides an array of PLCrashReportStackFrameInfo instances. + * The array is ordered, last callee to first. + */ +@property(nonatomic, readonly) NSArray *stackFrames; + +/** + * If this thread crashed, set to YES. + */ +@property(nonatomic, readonly) BOOL crashed; + +/** + * State of the general purpose and related registers, as a list of + * PLCrashReportRegister instances. If this thead did not crash (crashed returns NO), + * this list will be empty. + */ +@property(nonatomic, readonly) NSArray *registers; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashReporter.h b/Projectfiles/lib/CrittercismSDK/PLCrashReporter.h new file mode 100755 index 0000000..8ea5e46 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashReporter.h @@ -0,0 +1,97 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +/** + * @ingroup functions + * + * Prototype of a callback function used to execute additional user code with signal information as provided + * by PLCrashReporter. Called upon completion of crash handling, after the crash report has been written to disk. + * + * @param info The signal info. + * @param uap The crash's threads context. + * @param context The API client's supplied context value. + * + * @sa @ref async_safety + * @sa PLCrashReporter::setPostCrashCallbacks: + */ +typedef void (*PLCrashReporterPostCrashSignalCallback)(siginfo_t *info, ucontext_t *uap, void *context); + +/** + * @ingroup types + * + * This structure contains callbacks supported by PLCrashReporter to allow the host application to perform + * additional tasks prior to program termination after a crash has occured. + * + * @sa @ref async_safety + */ +typedef struct PLCrashReporterCallbacks { + /** The version number of this structure. If not one of the defined version numbers for this type, the behavior + * is undefined. The current version of this structure is 0. */ + uint16_t version; + + /** An arbitrary user-supplied context value. This value may be NULL. */ + void *context; + + /** The callback used to report caught signal information. In version 0 of this structure, all crashes will be + * reported via this function. */ + PLCrashReporterPostCrashSignalCallback handleSignal; +} PLCrashReporterCallbacks; + +@interface PLCrashReporter : NSObject { +@private + /** YES if the crash reporter has been enabled */ + BOOL _enabled; + + /** Application identifier */ + NSString *_applicationIdentifier; + + /** Application version */ + NSString *_applicationVersion; + + /** Path to the crash reporter internal data directory */ + NSString *_crashReportDirectory; +} + ++ (PLCrashReporter *) sharedReporter; + +- (BOOL) hasPendingCrashReport; + +- (NSData *) loadPendingCrashReportData; +- (NSData *) loadPendingCrashReportDataAndReturnError: (NSError **) outError; + +- (BOOL) purgePendingCrashReport; +- (BOOL) purgePendingCrashReportAndReturnError: (NSError **) outError; + +- (BOOL) enableCrashReporter; +- (BOOL) enableCrashReporterAndReturnError: (NSError **) outError; + +- (void) setCrashCallbacks: (PLCrashReporterCallbacks *) callbacks; + +@end \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashSignalHandler.h b/Projectfiles/lib/CrittercismSDK/PLCrashSignalHandler.h new file mode 100755 index 0000000..d50586a --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashSignalHandler.h @@ -0,0 +1,46 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2009 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#import + +@interface PLCrashSignalHandler : NSObject { +@private + /** Signal stack */ + stack_t _sigstk; +} + +/** + * @internal + * Signal handler callback. + */ +typedef void (*PLCrashSignalHandlerCallback)(int signal, siginfo_t *info, ucontext_t *uap, void *context); + ++ (PLCrashSignalHandler *) sharedHandler; +- (BOOL) registerHandlerWithCallback: (PLCrashSignalHandlerCallback) crashCallback context: (void *) context error: (NSError **) outError; + +@end diff --git a/Projectfiles/lib/CrittercismSDK/PLCrashSysctl.h b/Projectfiles/lib/CrittercismSDK/PLCrashSysctl.h new file mode 100755 index 0000000..dfde2e2 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/PLCrashSysctl.h @@ -0,0 +1,47 @@ +/* + * Author: Landon Fuller + * + * Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include + +#include +#include + +/** + * @internal + * @ingroup plcrash_host + * + * @{ + */ + +char *plcrash_sysctl_string (const char *name); +bool plcrash_sysctl_int (const char *name, int *result); + +/** + * @} + */ \ No newline at end of file diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-l.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-l.png new file mode 100644 index 0000000..102ab4b Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-l.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-l@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-l@2x.png new file mode 100644 index 0000000..77086c9 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-l@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left-gray-border.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left-gray-border.png new file mode 100644 index 0000000..0a045bb Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left-gray-border.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left-no-border.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left-no-border.png new file mode 100644 index 0000000..fe74e53 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left-no-border.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left.png new file mode 100644 index 0000000..abb67e7 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-left.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-let-no-border.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-let-no-border.png new file mode 100644 index 0000000..4865286 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-let-no-border.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-r.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-r.png new file mode 100644 index 0000000..84f6cba Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-r.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-r@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-r@2x.png new file mode 100644 index 0000000..08d9991 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-r@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-right-green-border.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-right-green-border.png new file mode 100644 index 0000000..52b1467 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-right-green-border.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-right-no-border.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-right-no-border.png new file mode 100644 index 0000000..6f8d359 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-arrow-right-no-border.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-avatar-default.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-avatar-default.png new file mode 100644 index 0000000..53d0953 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-avatar-default.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-avatar-us.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-avatar-us.png new file mode 100644 index 0000000..79d28d1 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-avatar-us.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-00.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-00.png new file mode 100644 index 0000000..78a1ad4 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-00.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-categorize-as.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-categorize-as.png new file mode 100644 index 0000000..be8b626 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-categorize-as.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-edit-form.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-edit-form.png new file mode 100644 index 0000000..b0700c1 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-edit-form.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-edit-form@2x~iphone.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-edit-form@2x~iphone.png new file mode 100644 index 0000000..bcc2a87 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-edit-form@2x~iphone.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-inactive-overlay.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-inactive-overlay.png new file mode 100644 index 0000000..4748a2f Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-inactive-overlay.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-reply-to.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-reply-to.png new file mode 100644 index 0000000..d320fd9 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bg-reply-to.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-add-comment-sel.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-add-comment-sel.png new file mode 100644 index 0000000..a0db294 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-add-comment-sel.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-add-comment.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-add-comment.png new file mode 100644 index 0000000..68bd60d Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-add-comment.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-cancel.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-cancel.png new file mode 100644 index 0000000..cb7b7d3 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-cancel.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-close.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-close.png new file mode 100644 index 0000000..69d366f Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-close.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-submit.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-submit.png new file mode 100644 index 0000000..47bc596 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-submit.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-dn-default.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-dn-default.png new file mode 100644 index 0000000..4d8e87f Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-dn-default.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-dn-voted.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-dn-voted.png new file mode 100644 index 0000000..ce85b5c Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-dn-voted.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-default.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-default.png new file mode 100644 index 0000000..b14a749 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-default.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-pressed.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-pressed.png new file mode 100644 index 0000000..2e7a818 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-pressed.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-pressed@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-pressed@2x.png new file mode 100644 index 0000000..997d9ea Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-pressed@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-voted.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-voted.png new file mode 100644 index 0000000..232da18 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up-voted.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up.png new file mode 100644 index 0000000..e3f9836 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up@2x.png new file mode 100644 index 0000000..e62ae42 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-btn-thumbs-up@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bug.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bug.png new file mode 100644 index 0000000..69a4d57 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-bug.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-checkbox-checked.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-checkbox-checked.png new file mode 100644 index 0000000..574204e Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-checkbox-checked.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-checkbox-unchecked.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-checkbox-unchecked.png new file mode 100644 index 0000000..0f10d4e Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-checkbox-unchecked.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-dev-profile-halfsize.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-dev-profile-halfsize.png new file mode 100644 index 0000000..d52cce2 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-dev-profile-halfsize.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-dev-profile-halfsize@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-dev-profile-halfsize@2x.png new file mode 100644 index 0000000..26c4f16 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-dev-profile-halfsize@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-feedback-forum-bg-gradient.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-feedback-forum-bg-gradient.png new file mode 100644 index 0000000..ff1f70f Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-feedback-forum-bg-gradient.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-gray.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-gray.png new file mode 100644 index 0000000..9e86558 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-gray.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-green.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-green.png new file mode 100644 index 0000000..c38759e Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-green.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster-ftw.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster-ftw.png new file mode 100644 index 0000000..4263c4b Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster-ftw.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster-twitter.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster-twitter.png new file mode 100644 index 0000000..5c7194a Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster-twitter.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster.png new file mode 100644 index 0000000..01797d9 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-hamster.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-idea.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-idea.png new file mode 100644 index 0000000..0588728 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-idea.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-idea@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-idea@2x.png new file mode 100644 index 0000000..7911f93 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-idea@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-love.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-love.png new file mode 100644 index 0000000..9801999 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-love.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-love@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-love@2x.png new file mode 100644 index 0000000..28fc229 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-love@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-problem.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-problem.png new file mode 100644 index 0000000..46cf3f4 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-problem.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-problem@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-problem@2x.png new file mode 100644 index 0000000..dd6ecc6 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-problem@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-question.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-question.png new file mode 100644 index 0000000..4991964 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-question.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-question@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-question@2x.png new file mode 100644 index 0000000..764cdf7 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-cat-question@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-tab-01.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-tab-01.png new file mode 100644 index 0000000..b9d3088 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-icon-tab-01.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-idea.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-idea.png new file mode 100755 index 0000000..be61b75 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-idea.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-love.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-love.png new file mode 100644 index 0000000..70229ae Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-love.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-other.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-other.png new file mode 100644 index 0000000..ed57e3b Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-other.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-question.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-question.png new file mode 100644 index 0000000..5995500 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-question.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-tab-icon@1x~iphone.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-tab-icon@1x~iphone.png new file mode 100644 index 0000000..c6bfd9e Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-tab-icon@1x~iphone.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-tab-icon@2x~ipad.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-tab-icon@2x~ipad.png new file mode 100644 index 0000000..eb18a37 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-tab-icon@2x~ipad.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-title-bar.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-title-bar.png new file mode 100644 index 0000000..9b7e558 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-title-bar.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-arrow-l.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-arrow-l.png new file mode 100644 index 0000000..41315d2 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-arrow-l.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-arrow-l@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-arrow-l@2x.png new file mode 100644 index 0000000..4e3a83e Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-arrow-l@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile-halfsize.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile-halfsize.png new file mode 100644 index 0000000..f190f08 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile-halfsize.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile.png new file mode 100644 index 0000000..91f8fed Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile@2x.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile@2x.png new file mode 100644 index 0000000..0b62660 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-user-profile@2x.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-votesLeftButton.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-votesLeftButton.png new file mode 100644 index 0000000..25eebca Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism-votesLeftButton.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism_icon.png b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism_icon.png new file mode 100644 index 0000000..e486b75 Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/Resources/Images/crittercism_icon.png differ diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAboutViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAboutViewController.xib new file mode 100644 index 0000000..aec42ba --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAboutViewController.xib @@ -0,0 +1,656 @@ + + + + 800 + 10J4138 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 301 + + + YES + IBUITextField + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 256 + {{110, 159}, {100, 100}} + + + + NO + 1 + NO + IBCocoaTouchFramework + + NSImage + crittercism-hamster.png + + + + + 292 + {{20, 31}, {280, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Are you a developer? Sign up here! + + Helvetica + 17 + 16 + + + 1 + MC44MDAwMDAwMTE5IDAuODAwMDAwMDExOSAwLjgwMDAwMDAxMTkAA + + + 1 + 12 + + + + 292 + {{20, 60}, {203, 31}} + + + + NO + YES + IBCocoaTouchFramework + 0 + + 3 + E-Mail Address + + 3 + MAA + + 2 + + + YES + 17 + + 7 + IBCocoaTouchFramework + + 1 + + + + 289 + {{233, 57}, {67, 37}} + + + + + 1 + MSAxIDEAA + + NO + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 15 + 16 + + Submit + Submit + Submit + + 1 + MCAwIDAAA + + + + 3 + MC41AA + + + + + 269 + {{102, 256}, {128, 29}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Crittercism! + + Helvetica + 24 + 16 + + + 1 + MSAxIDEAA + + 1 + + + + 3 + MQA + + 1 + 10 + + + + 269 + {{10, 291}, {300, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + A Mobile Feedback and Support Solution + + 1 + MC41MDE5NjA4MTQgMC41MDE5NjA4MTQgMC41MDE5NjA4MTQAA + + + 1 + 10 + + + + 268 + {{10, 318}, {25, 25}} + + + + NO + 7 + IBCocoaTouchFramework + 0 + 0 + + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + crittercism-checkbox-checked.png + + + NSImage + crittercism-checkbox-unchecked.png + + + + + 268 + {{44, 320}, {266, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Don't send crash & debug data to the developer + + Helvetica + 12 + 16 + + + 1 + MC40MDAwMDAwMDYgMC40MDAwMDAwMDYgMC40MDAwMDAwMDYAA + + + 1 + 10 + + + {{0, 64}, {320, 367}} + + + + + 3 + MAA + + + + NO + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + questionLabel + + + + 18 + + + + delegate + + + + 21 + + + + emailField + + + + 22 + + + + submitButton + + + + 23 + + + + submitHit: + + + 7 + + 24 + + + + hamster + + + + 27 + + + + crittercismLabel + + + + 28 + + + + crittercismDescriptionLabel + + + + 29 + + + + optCheckbox + + + + 35 + + + + optHit: + + + 7 + + 36 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 8 + + + + + 9 + + + + + 19 + + + + + 20 + + + + + 25 + + + + + 26 + + + + + 33 + + + + + 34 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 19.IBPluginDependency + 19.IBViewBoundsToFrameTransform + 20.IBPluginDependency + 20.IBViewBoundsToFrameTransform + 25.IBPluginDependency + 25.IBViewBoundsToFrameTransform + 26.IBPluginDependency + 26.IBViewBoundsToFrameTransform + 33.IBPluginDependency + 34.IBPluginDependency + 8.IBPluginDependency + 8.IBViewBoundsToFrameTransform + 9.IBPluginDependency + + + YES + CrittercismAboutViewController + UIResponder + {{407, 158}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABDMgAAw4eAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABByAAAw3sAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABC8AAAw6kAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABBoAAAw7YAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABC3AAAw5aAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 36 + + + + YES + + CrittercismAboutViewController + UIViewController + + YES + + YES + optHit: + submitHit: + + + YES + id + id + + + + YES + + YES + optHit: + submitHit: + + + YES + + optHit: + id + + + submitHit: + id + + + + + YES + + YES + crittercismDescriptionLabel + crittercismLabel + emailField + hamster + optCheckbox + questionLabel + submitButton + + + YES + UILabel + UILabel + UITextField + UIImageView + UIButton + UILabel + UIButton + + + + YES + + YES + crittercismDescriptionLabel + crittercismLabel + emailField + hamster + optCheckbox + questionLabel + submitButton + + + YES + + crittercismDescriptionLabel + UILabel + + + crittercismLabel + UILabel + + + emailField + UITextField + + + hamster + UIImageView + + + optCheckbox + UIButton + + + questionLabel + UILabel + + + submitButton + UIButton + + + + + IBProjectSource + ./Classes/CrittercismAboutViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + crittercism-checkbox-checked.png + crittercism-checkbox-unchecked.png + crittercism-hamster.png + + + YES + {40, 40} + {40, 40} + {300, 300} + + + 301 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAddCommentViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAddCommentViewController.xib new file mode 100644 index 0000000..2dcc80a --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAddCommentViewController.xib @@ -0,0 +1,457 @@ + + + + 1024 + 10D2125 + 804 + 1038.29 + 460.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 123 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 306 + {{5, 5}, {310, 170}} + + + 1 + MSAxIDEAA + + YES + YES + IBCocoaTouchFramework + NO + NO + NO + NO + + + 2 + IBCocoaTouchFramework + + + + {320, 460} + + + 1 + MCAwIDAAA + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + commentTextView + + + + 7 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 4.IBPluginDependency + 4.IBViewBoundsToFrameTransform + + + YES + CrittercismAddCommentViewController + UIResponder + {{556, 276}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABAoAAAw1kAAA + + + + + YES + + + YES + + + + + YES + + + YES + + + + 12 + + + + YES + + CrittercismAddCommentViewController + UIViewController + + YES + + YES + cancelHit: + saveHit: + + + YES + id + id + + + + YES + + YES + cancelHit: + saveHit: + + + YES + + cancelHit: + id + + + saveHit: + id + + + + + YES + + YES + commentTextView + navBar + + + YES + UITextView + UINavigationBar + + + + YES + + YES + commentTextView + navBar + + + YES + + commentTextView + UITextView + + + navBar + UINavigationBar + + + + + IBProjectSource + ../Crittercism_3_2_2_Lib/CrittercismAddCommentViewController.h + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UINavigationBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UINavigationBar.h + + + + UIResponder + NSObject + + + + UIScrollView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIScrollView.h + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UITextView + UIScrollView + + IBFrameworkSource + UIKit.framework/Headers/UITextView.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UIPopoverController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UISplitViewController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + Crittercism_3_2_4.xcodeproj + 3 + 123 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAddViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAddViewController.xib new file mode 100644 index 0000000..a7a6192 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismAddViewController.xib @@ -0,0 +1,671 @@ + + + + 800 + 10J4138 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 301 + + + YES + IBUIView + IBProxyObject + IBUILabel + IBUIActivityIndicatorView + IBUITextField + IBUITextView + IBUIButton + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 289 + {{228, 10}, {87, 31}} + + + + + 1 + MC44NTA5ODAzOTIyIDAuODUwOTgwMzkyMiAwLjg1MDk4MDM5MjIAA + + NO + IBCocoaTouchFramework + NO + 0 + 0 + + Helvetica-Bold + 11 + 16 + + 0.0 + 0.0 + 0.0 + 5 + Bug + Bug + + 3 + MQA + + + 1 + MCAwIDAAA + + + + 3 + MC41AA + + + NSImage + crittercism-icon-cat-problem.png + + + + NSImage + crittercism-green.png + + + + + 290 + {{50, 10}, {172, 31}} + + + + + 3 + MCAwAA + + NO + YES + IBCocoaTouchFramework + 0 + + 3 + + 3 + MAA + + 2 + + + YES + 17 + + IBCocoaTouchFramework + + + + + 292 + {{12, 15}, {42, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Title + + + 1 + 10 + + + + 292 + {{12, 44}, {162, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Description (optional) + + Helvetica + 16 + 16 + + + + 1 + 10 + + + + 306 + {{5, 69}, {310, 95}} + + + + + YES + YES + IBCocoaTouchFramework + NO + NO + NO + NO + + + 2 + IBCocoaTouchFramework + + + + + 301 + {{98, 57}, {124, 137}} + + + + + 1 + MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA + + NO + 0.0 + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 15 + 16 + + Submitting... + + + + + + + 301 + {{141, 72}, {37, 37}} + + + NO + 0.0 + IBCocoaTouchFramework + NO + YES + 0 + + + {{0, 64}, {320, 416}} + + + + + 3 + MC42NjY2NjY2NjY3AA + + + + NO + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + titleLabel + + + + 14 + + + + titleTextField + + + + 15 + + + + descriptionLabel + + + + 18 + + + + descriptionTextView + + + + 23 + + + + delegate + + + + 36 + + + + submittingButton + + + + 39 + + + + indicator + + + + 40 + + + + categoryButton + + + + 49 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 38 + + + + + 37 + + + + + 11 + + + + + 9 + + + + + 8 + + + + + 5 + + + + + 24 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 11.IBPluginDependency + 11.IBViewBoundsToFrameTransform + 24.IBPluginDependency + 37.IBPluginDependency + 38.IBPluginDependency + 5.IBPluginDependency + 5.IBViewBoundsToFrameTransform + 8.IBPluginDependency + 8.IBViewBoundsToFrameTransform + 9.IBPluginDependency + 9.IBViewBoundsToFrameTransform + + + YES + CrittercismAddViewController + UIResponder + {{461, 276}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + AUGgAABC0AAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + AUKAAABCNAAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + AUGgAABCSAAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + AUGgAABCngAAA + + + + + YES + + + + + + YES + + + + + 49 + + + + YES + + CrittercismAddViewController + UIViewController + + YES + + YES + bugHit: + ideaHit: + loveHit: + questionHit: + + + YES + id + id + id + id + + + + YES + + YES + bugHit: + ideaHit: + loveHit: + questionHit: + + + YES + + bugHit: + id + + + ideaHit: + id + + + loveHit: + id + + + questionHit: + id + + + + + YES + + YES + _categoryButton + addScrollView + backgroundImage + bugToggle + categoryButton + descriptionLabel + descriptionTextView + ideaToggle + indicator + loveToggle + nameLabel + nameTextField + questionToggle + submittingButton + titleLabel + titleTextField + + + YES + UIButton + UIScrollView + UIImageView + UIButton + UIButton + UILabel + UITextView + UIButton + UIActivityIndicatorView + UIButton + UILabel + UITextField + UIButton + UIButton + UILabel + UITextField + + + + YES + + YES + _categoryButton + addScrollView + backgroundImage + bugToggle + categoryButton + descriptionLabel + descriptionTextView + ideaToggle + indicator + loveToggle + nameLabel + nameTextField + questionToggle + submittingButton + titleLabel + titleTextField + + + YES + + _categoryButton + UIButton + + + addScrollView + UIScrollView + + + backgroundImage + UIImageView + + + bugToggle + UIButton + + + categoryButton + UIButton + + + descriptionLabel + UILabel + + + descriptionTextView + UITextView + + + ideaToggle + UIButton + + + indicator + UIActivityIndicatorView + + + loveToggle + UIButton + + + nameLabel + UILabel + + + nameTextField + UITextField + + + questionToggle + UIButton + + + submittingButton + UIButton + + + titleLabel + UILabel + + + titleTextField + UITextField + + + + + IBProjectSource + ./Classes/CrittercismAddViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + crittercism-green.png + crittercism-icon-cat-problem.png + + + YES + {84, 31} + {35, 35} + + + 301 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismCell.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismCell.xib new file mode 100644 index 0000000..cb29769 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismCell.xib @@ -0,0 +1,546 @@ + + + + 800 + 10H574 + 804 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 123 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + YES + + + 256 + + YES + + + 294 + {{48, 17}, {203, 21}} + + + 1 + MSAxIDEgMAA + + NO + YES + 101 + NO + IBCocoaTouchFramework + Feedback Item + + Helvetica + 14 + 16 + + + 1 + MCAwIDAAA + + + 1 + NO + 14 + + + + 289 + {{259, -4}, {30, 21}} + + + 1 + MC4zOTIxNTY4NjI3IDAuNTUyOTQxMTc2NSAwLjMyMTU2ODYyNzUgMAA + + NO + YES + 7 + 102 + NO + IBCocoaTouchFramework + 0 + + Helvetica + 12 + 16 + + + 1 + MC4xMjE1Njg2Mjc1IDAuMjcwNTg4MjM1MyAwLjcxNzY0NzA1ODgAA + + + 1 + 10 + 1 + + + + 289 + {{250, 0}, {50, 55}} + + NO + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 15 + 16 + + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + + + 292 + {{5, 10}, {35, 35}} + + NO + 100 + NO + IBCocoaTouchFramework + + NSImage + crittercism-icon-cat-idea.png + + + + + 289 + {{259, 12}, {30, 40}} + + + 3 + MCAwAA + + NO + 104 + IBCocoaTouchFramework + 0 + 0 + + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + crittercism-btn-thumbs-up-pressed.png + + + NSImage + crittercism-btn-thumbs-up.png + + + + {300, 55} + + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 55} + + + 1 + MSAxIDEgMAA + + NO + 0.0 + IBCocoaTouchFramework + 1 + 0.0 + + NO + TaskCell + + + + + YES + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + YES + + + + + + + + + + 3 + + + + + 13 + + + + + 14 + + + + + 17 + + + + + 20 + + + + + + + YES + + YES + -2.CustomClassName + 13.IBPluginDependency + 13.IBViewBoundsToFrameTransform + 14.IBPluginDependency + 17.IBPluginDependency + 2.IBEditorWindowLastContentRect + 2.IBPluginDependency + 20.IBPluginDependency + 3.IBPluginDependency + + + YES + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABBYAAAwiwAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + {{382, 532}, {320, 55}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 20 + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSNetServices.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPort.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSStream.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSXMLParser.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIButton + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UIButton.h + + + + UIControl + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIControl.h + + + + UIImageView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIImageView.h + + + + UILabel + UIView + + IBFrameworkSource + UIKit.framework/Headers/UILabel.h + + + + UIResponder + NSObject + + + + UITableViewCell + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITableViewCell.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + ../Code_Linked/Testing3_2_4_linked/Testing3_2_4.xcodeproj + 3 + + YES + + YES + crittercism-btn-thumbs-up-pressed.png + crittercism-btn-thumbs-up.png + crittercism-icon-cat-idea.png + + + YES + {30, 40} + {30, 40} + {35, 35} + + + 123 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismDescriptionViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismDescriptionViewController.xib new file mode 100644 index 0000000..4a69f33 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismDescriptionViewController.xib @@ -0,0 +1,869 @@ + + + + 800 + 10J4138 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 301 + + + YES + IBUILabel + IBUIButton + IBUIImageView + IBUIView + IBUIScrollView + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 268 + + YES + + + 292 + {{9, 8}, {302, 194}} + + + NO + NO + IBCocoaTouchFramework + NO + 0 + 0 + + Helvetica-Bold + 15 + 16 + + 1 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + + + 292 + {{63, 46}, {237, 85}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + + + Helvetica + 14 + 16 + + + 3 + MC4zMzMzMzMzMzMzAA + + + 1 + 10 + 9999 + 0 + + + + 274 + {{20, 16}, {35, 35}} + + + NO + NO + IBCocoaTouchFramework + + NSImage + crittercism-icon-cat-problem.png + + + + + 274 + {{21, 153}, {36, 36}} + + + NO + NO + IBCocoaTouchFramework + + NSImage + crittercism-user-profile-halfsize.png + + + + + 292 + {{68, 168}, {99, 21}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Anonymous + + Helvetica + 12 + 16 + + + 1 + MCAwIDAAA + + + {0, 0} + 1 + 11 + + + + 292 + {{68, 153}, {75, 21}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Submitted by: + + + + {0, 0} + 1 + 11 + + + + 292 + {{63, 19}, {237, 21}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + There is no title. + + + 1 + 10 + + + + 289 + {{270, 153}, {30, 40}} + + + + 3 + MCAwAA + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + crittercism-btn-thumbs-up.png + + + + + 289 + {{270, 132}, {30, 21}} + + + + 1 + MC4zOTIxNTY4NjI3IDAuNTUyOTQxMTc2NSAwLjMyMTU2ODYyNzUgMAA + + NO + YES + 7 + NO + IBCocoaTouchFramework + 0 + + Helvetica-Bold + 12 + 16 + + + 1 + MC4xMjE1Njg2Mjc1IDAuMjcwNTg4MjM1MyAwLjcxNzY0NzA1ODgAA + + + 1 + 10 + 1 + + + + 289 + {{175, 153}, {87, 40}} + + + + 1 + MC40OTgwMzkyMTU3IDAuNDk4MDM5MjE1NyAwLjQ5ODAzOTIxNTcAA + + NO + IBCocoaTouchFramework + 0 + 0 + + Reply + Reply + + + 1 + MSAxIDEAA + + + + + {320, 367} + + + + 10 + + 549453824 + {84, 1} + + YES + + YES + + + + TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB +AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + groupTableViewBackgroundColor + + YES + IBCocoaTouchFramework + YES + NO + + + + 294 + {{0, 9999}, {320, 60}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + 0.0 + 18 + 0.0 + 0.0 + Votes Left + + + + + + {{0, 64}, {320, 367}} + + + + 2 + MC44NzA1ODgzMDI2IDAuODc4NDMxNDM5NCAwLjkxNzY0NzEyMzMAA + + 3 + + + NO + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + titleLabel + + + + 19 + + + + categoryImage + + + + 20 + + + + avatarImage + + + + 21 + + + + avatarLabel + + + + 22 + + + + thumbsUpButton + + + + 24 + + + + thumbsUpLabel + + + + 26 + + + + commentsScrollView + + + + 28 + + + + descriptionLabel + + + + 33 + + + + feedbackBubble + + + + 35 + + + + addCommentButton + + + + 36 + + + + addCommentHit: + + + 7 + + 37 + + + + showVotesButton + + + + 39 + + + + thumbsUpHit: + + + 7 + + 40 + + + + avatarSubmitLabel + + + + 44 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 17 + + + YES + + + + + + + + + + + + + + + 10 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + 8 + + + + + 11 + + + + + 13 + + + + + 30 + + + + + 32 + + + + + 38 + + + + + 43 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 10.IBPluginDependency + 11.IBPluginDependency + 13.IBPluginDependency + 17.IBPluginDependency + 30.IBPluginDependency + 30.IBViewBoundsToFrameTransform + 32.IBPluginDependency + 38.IBPluginDependency + 43.IBPluginDependency + 43.IBViewBoundsToFrameTransform + 5.IBPluginDependency + 5.IBViewBoundsToFrameTransform + 6.IBPluginDependency + 6.IBViewBoundsToFrameTransform + 7.IBPluginDependency + 7.IBViewBoundsToFrameTransform + 8.IBPluginDependency + + + YES + CrittercismDescriptionViewController + UIResponder + {{407, 230}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABBoAAAwzwAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABCpgAAwzsAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABBoAAAwlQAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABBoAAAwzMAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABCpgAAwzsAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 45 + + + + YES + + CrittercismDescriptionViewController + UIViewController + + YES + + YES + addCommentHit: + thumbsDownHit: + thumbsUpHit: + + + YES + id + id + id + + + + YES + + YES + addCommentHit: + thumbsDownHit: + thumbsUpHit: + + + YES + + addCommentHit: + id + + + thumbsDownHit: + id + + + thumbsUpHit: + id + + + + + YES + + YES + addCommentButton + avatarImage + avatarLabel + avatarSubmitLabel + categoryImage + commentTextView + commentsScrollView + descriptionLabel + feedbackBubble + showVotesButton + thumbsDownButton + thumbsDownLabel + thumbsUpButton + thumbsUpLabel + titleLabel + + + YES + UIButton + UIImageView + UILabel + UILabel + UIImageView + UITextView + UIScrollView + UILabel + UIButton + UIButton + UIButton + UILabel + UIButton + UILabel + UILabel + + + + YES + + YES + addCommentButton + avatarImage + avatarLabel + avatarSubmitLabel + categoryImage + commentTextView + commentsScrollView + descriptionLabel + feedbackBubble + showVotesButton + thumbsDownButton + thumbsDownLabel + thumbsUpButton + thumbsUpLabel + titleLabel + + + YES + + addCommentButton + UIButton + + + avatarImage + UIImageView + + + avatarLabel + UILabel + + + avatarSubmitLabel + UILabel + + + categoryImage + UIImageView + + + commentTextView + UITextView + + + commentsScrollView + UIScrollView + + + descriptionLabel + UILabel + + + feedbackBubble + UIButton + + + showVotesButton + UIButton + + + thumbsDownButton + UIButton + + + thumbsDownLabel + UILabel + + + thumbsUpButton + UIButton + + + thumbsUpLabel + UILabel + + + titleLabel + UILabel + + + + + IBProjectSource + ./Classes/CrittercismDescriptionViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + crittercism-btn-thumbs-up.png + crittercism-icon-cat-problem.png + crittercism-user-profile-halfsize.png + + + YES + {30, 40} + {35, 35} + {36, 36} + + + 301 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismGridViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismGridViewController.xib new file mode 100644 index 0000000..8f2f0f7 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismGridViewController.xib @@ -0,0 +1,150 @@ + + + + 784 + 10B500 + 732 + 1038.2 + 437.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 62 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + + + IBFirstResponder + + + + 274 + {320, 460} + + + 3 + MQA + + 2 + + + + + + + + YES + + + view + + + + 3 + + + + + YES + + 0 + + + + + + 1 + + + + + -1 + + + File's Owner + + + -2 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + + + YES + CrittercismGridViewController + UIResponder + {{556, 412}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 3 + + + + YES + + CrittercismGridViewController + UIViewController + + IBProjectSource + CrittercismGridViewController.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + + 3 + 3.1 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismRootViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismRootViewController.xib new file mode 100644 index 0000000..09f5ab2 --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismRootViewController.xib @@ -0,0 +1,1182 @@ + + + + 800 + 10J4138 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 301 + + + YES + IBUIView + IBUIImageView + IBProxyObject + IBUILabel + IBUIActivityIndicatorView + IBUITextField + IBUITableView + IBUIButton + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + YES + + + 274 + {{0, 43}, {320, 393}} + + + + + 3 + MQA + + NO + YES + NO + IBCocoaTouchFramework + NO + 1 + 0 + YES + 44 + 22 + 22 + + + + 292 + {320, 44} + + + + + 1 + MC42IDAuNiAwLjYAA + + NO + IBCocoaTouchFramework + + + + 292 + {{93, 51}, {63, 31}} + + + + + 1 + MC44NTA5ODAzOTIyIDAuODUwOTgwMzkyMiAwLjg1MDk4MDM5MjIAA + + NO + 0.0 + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 11 + 16 + + 0.0 + 0.0 + 0.0 + 5 + 0.0 + 0.0 + 0.0 + -2 + Idea + Idea + + + 1 + MCAwIDAAA + + + + 3 + MC41AA + + + NSImage + crittercism-icon-cat-idea.png + + + + NSImage + crittercism-green.png + + + + + 292 + {{158, 51}, {68, 31}} + + + + + 1 + MC44NTA5ODAzOTIyIDAuODUwOTgwMzkyMiAwLjg1MDk4MDM5MjIAA + + NO + 0.0 + IBCocoaTouchFramework + 0 + 0 + + 0.0 + 0.0 + 0.0 + 5 + 0.0 + 0.0 + 0.0 + -2 + Love + Love + + + + + NSImage + crittercism-icon-cat-love.png + + + + + + + 292 + {{228, 51}, {87, 31}} + + + + + 1 + MC44IDAuOCAwLjgAA + + NO + 0.0 + IBCocoaTouchFramework + 0 + 0 + + 0.0 + 0.0 + 0.0 + 3 + 0.0 + 0.0 + 0.0 + -5 + Question + Question + + + + + + NSImage + crittercism-icon-cat-question.png + + + + + + + 292 + {{5, 51}, {86, 31}} + + + + + 2 + MC44NTA5ODAzOTIyIDAuODUwOTgwMzkyMiAwLjg1MDk4MDM5MjIAA + + NO + 0.0 + IBCocoaTouchFramework + YES + 0 + 0 + + 0.0 + 0.0 + 0.0 + 5 + Problem + Problem + + + + + NSImage + crittercism-icon-cat-problem.png + + + + + + + 292 + {{15, 39}, {80, 13}} + + + + NO + YES + 0.0 + 7 + NO + IBCocoaTouchFramework + Categorize As + + Helvetica + 10 + 16 + + + + 1 + 10 + + + + 292 + {{10, 6}, {301, 31}} + + + + NO + YES + IBCocoaTouchFramework + NO + 0 + + 3 + Leave Feedback Here + + 3 + MAA + + 2 + + + + Helvetica + 14 + 16 + + YES + 17 + + 1 + IBCocoaTouchFramework + + 1 + + + + 301 + {{151, 195}, {20, 20}} + + + + NO + IBCocoaTouchFramework + NO + YES + 2 + + + + 289 + {{260, 6}, {50, 31}} + + + + + 1 + MC40OTgwMzkyMTU3IDAuNDk4MDM5MjE1NyAwLjQ5ODAzOTIxNTcAA + + NO + 0.0 + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 12 + 16 + + Cancel + Cancel + + + + 1 + MSAxIDEAA + + + + + + + 269 + {{0, 9999}, {320, 60}} + + + + + 3 + MC42NjY2NjY2NjY3IDAAA + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 15 + 16 + + 1 + 0.0 + 18 + 0.0 + 0.0 + Votes Left + + + + + + {{0, 44}, {320, 436}} + + + + + + NO + + IBCocoaTouchFramework + + + + + YES + + + dataSource + + + + 4 + + + + delegate + + + + 5 + + + + view + + + + 8 + + + + feedbackTable + + + + 19 + + + + searchTF + + + + 24 + + + + searchTFEntered: + + + 17 + + 25 + + + + ideaToggle + + + + 40 + + + + delegate + + + + 43 + + + + searchBackground + + + + 44 + + + + loveToggle + + + + 51 + + + + questionToggle + + + + 52 + + + + bugToggle + + + + 53 + + + + categorizeAsLabel + + + + 54 + + + + ideaHit: + + + 7 + + 55 + + + + loveHit: + + + 7 + + 56 + + + + questionHit: + + + 7 + + 57 + + + + bugHit: + + + 7 + + 59 + + + + searchChanged: + + + 18 + + 60 + + + + searchTFExited: + + + 19 + + 61 + + + + loadingIndicator + + + + 63 + + + + cancelButton + + + + 66 + + + + cancelHit: + + + 7 + + 67 + + + + showVotesButton + + + + 69 + + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 7 + + + YES + + + + + + + + + + + + + + + + 22 + + + + + 37 + + + + + 38 + + + + + 2 + + + YES + + + + + 48 + + + + + 23 + + + + + 50 + + + + + 62 + + + + + 65 + + + + + 68 + + + + + 35 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 2.IBEditorWindowLastContentRect + 2.IBPluginDependency + 22.IBPluginDependency + 23.IBPluginDependency + 35.IBPluginDependency + 37.IBPluginDependency + 37.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 38.IBPluginDependency + 48.IBPluginDependency + 50.IBPluginDependency + 62.IBPluginDependency + 65.IBPluginDependency + 68.IBPluginDependency + 7.IBEditorWindowLastContentRect + 7.IBPluginDependency + 7.IBViewEditorWindowController.showingLayoutRectangles + + + YES + CrittercismRootViewController + UIResponder + {{569, 217}, {320, 247}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + {{407, 269}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + YES + + + + + + YES + + + + + 75 + + + + YES + + CrittercismAddViewController + UIViewController + + YES + + YES + bugHit: + ideaHit: + loveHit: + questionHit: + + + YES + id + id + id + id + + + + YES + + YES + bugHit: + ideaHit: + loveHit: + questionHit: + + + YES + + bugHit: + id + + + ideaHit: + id + + + loveHit: + id + + + questionHit: + id + + + + + YES + + YES + _categoryButton + addScrollView + backgroundImage + bugToggle + categoryButton + descriptionLabel + descriptionTextView + ideaToggle + indicator + loveToggle + nameLabel + nameTextField + questionToggle + submittingButton + titleLabel + titleTextField + + + YES + UIButton + UIScrollView + UIImageView + UIButton + UIButton + UILabel + UITextView + UIButton + UIActivityIndicatorView + UIButton + UILabel + UITextField + UIButton + UIButton + UILabel + UITextField + + + + YES + + YES + _categoryButton + addScrollView + backgroundImage + bugToggle + categoryButton + descriptionLabel + descriptionTextView + ideaToggle + indicator + loveToggle + nameLabel + nameTextField + questionToggle + submittingButton + titleLabel + titleTextField + + + YES + + _categoryButton + UIButton + + + addScrollView + UIScrollView + + + backgroundImage + UIImageView + + + bugToggle + UIButton + + + categoryButton + UIButton + + + descriptionLabel + UILabel + + + descriptionTextView + UITextView + + + ideaToggle + UIButton + + + indicator + UIActivityIndicatorView + + + loveToggle + UIButton + + + nameLabel + UILabel + + + nameTextField + UITextField + + + questionToggle + UIButton + + + submittingButton + UIButton + + + titleLabel + UILabel + + + titleTextField + UITextField + + + + + IBProjectSource + ./Classes/CrittercismAddViewController.h + + + + CrittercismRootViewController + UIViewController + + YES + + YES + bugHit: + cancelHit: + earnVoteHit: + ideaHit: + loveHit: + questionHit: + searchChanged: + searchTFEntered: + searchTFExited: + thumbsDownHit: + thumbsUpHit: + + + YES + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + bugHit: + cancelHit: + earnVoteHit: + ideaHit: + loveHit: + questionHit: + searchChanged: + searchTFEntered: + searchTFExited: + thumbsDownHit: + thumbsUpHit: + + + YES + + bugHit: + id + + + cancelHit: + id + + + earnVoteHit: + id + + + ideaHit: + id + + + loveHit: + id + + + questionHit: + id + + + searchChanged: + id + + + searchTFEntered: + id + + + searchTFExited: + id + + + thumbsDownHit: + id + + + thumbsUpHit: + id + + + + + YES + + YES + bugToggle + cancelButton + categorizeAsLabel + feedbackTable + greenCategorizeBox + ideaToggle + loadingIndicator + loveToggle + questionToggle + searchBackground + searchBar + searchTF + showVotesButton + + + YES + UIButton + UIButton + UILabel + UITableView + UIImageView + UIButton + UIActivityIndicatorView + UIButton + UIButton + UIImageView + UISearchBar + UITextField + UIButton + + + + YES + + YES + bugToggle + cancelButton + categorizeAsLabel + feedbackTable + greenCategorizeBox + ideaToggle + loadingIndicator + loveToggle + questionToggle + searchBackground + searchBar + searchTF + showVotesButton + + + YES + + bugToggle + UIButton + + + cancelButton + UIButton + + + categorizeAsLabel + UILabel + + + feedbackTable + UITableView + + + greenCategorizeBox + UIImageView + + + ideaToggle + UIButton + + + loadingIndicator + UIActivityIndicatorView + + + loveToggle + UIButton + + + questionToggle + UIButton + + + searchBackground + UIImageView + + + searchBar + UISearchBar + + + searchTF + UITextField + + + showVotesButton + UIButton + + + + + IBProjectSource + ./Classes/CrittercismRootViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + crittercism-green.png + crittercism-icon-cat-idea.png + crittercism-icon-cat-love.png + crittercism-icon-cat-problem.png + crittercism-icon-cat-question.png + + + YES + {84, 31} + {35, 35} + {35, 35} + {35, 35} + {35, 35} + + + 301 + + diff --git a/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismViewController.xib b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismViewController.xib new file mode 100644 index 0000000..9d3fb6a --- /dev/null +++ b/Projectfiles/lib/CrittercismSDK/Resources/Nibs/CrittercismViewController.xib @@ -0,0 +1,151 @@ + + + + 1024 + 10J4138 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 301 + + + YES + IBProxyObject + IBUIView + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {{0, 20}, {320, 460}} + + + + 1 + MC42IDAuNiAwLjYAA + + NO + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + + YES + + 0 + + + + + + 1 + + + + + -1 + + + File's Owner + + + -2 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + + + YES + CrittercismViewController + UIResponder + {{445, 276}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 3 + + + + YES + + CrittercismViewController + UIViewController + + IBProjectSource + ./Classes/CrittercismViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 301 + + diff --git a/Projectfiles/lib/CrittercismSDK/libCrittercism_v3_1_5.a b/Projectfiles/lib/CrittercismSDK/libCrittercism_v3_1_5.a new file mode 100644 index 0000000..c5c340e Binary files /dev/null and b/Projectfiles/lib/CrittercismSDK/libCrittercism_v3_1_5.a differ diff --git a/Projectfiles/lib/Google Analytics SDK/Changelog.txt b/Projectfiles/lib/Google Analytics SDK/Changelog.txt new file mode 100644 index 0000000..4cd44b0 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Changelog.txt @@ -0,0 +1,42 @@ +iPhone Analytics SDK Changelog + +-------------------------------------------- +Version: 1.4 (November, 2011) +-------------------------------------------- +* Added dispatchSynchronously method. +* Exposed several useful constants. +* Changed location of the Google Analytics + database from Documents to Library. +* The SDK no longer throws NSAsserts for SQLite + database errors. +* Fixed crash when calling trackPageview with an + empty string +* Fixed crashes when calling various GANTracker + methods after stopTracker was called +* Fixed several memory leaks, including one calling + trackPageview with a pageURL that begins with '/' + +-------------------------------------------- +Version: 1.3 (August, 2011) +-------------------------------------------- +* Added anonymizeIp flag. +* Added sampleRate parameter. +* Added support for campaign referrals. + +-------------------------------------------- +Version: 1.2 (June, 2011) +-------------------------------------------- +* Added support for Ecommerce. +* Added Debug flag. +* Added DryRun flag. + +-------------------------------------------- +Version: 1.1 (February, 2011) +-------------------------------------------- +* Added support for Custom Variables. +* Added a NoThumb version of the library. + +-------------------------------------------- +Version: 1.0 (July, 2010) +-------------------------------------------- +* iOS4 support for iPhone-Analytics. diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/BasicExample.xcodeproj/project.pbxproj b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/BasicExample.xcodeproj/project.pbxproj new file mode 100755 index 0000000..d76ef79 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/BasicExample.xcodeproj/project.pbxproj @@ -0,0 +1,279 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 1D3623260D0F684500981E51 /* BasicExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* BasicExampleAppDelegate.m */; }; + 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; + 7D7132020F764A2900464816 /* libGoogleAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D7132010F764A2900464816 /* libGoogleAnalytics.a */; }; + 7D7132150F764B7000464816 /* libsqlite3.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D7132140F764B7000464816 /* libsqlite3.0.dylib */; }; + 7D7878210F8C367B00F05D01 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D7878200F8C367B00F05D01 /* CFNetwork.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 1D3623240D0F684500981E51 /* BasicExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicExampleAppDelegate.h; sourceTree = ""; }; + 1D3623250D0F684500981E51 /* BasicExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BasicExampleAppDelegate.m; sourceTree = ""; }; + 1D6058910D05DD3D006BFB54 /* BasicExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BasicExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* BasicExample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicExample_Prefix.pch; sourceTree = ""; }; + 7D7132000F764A2900464816 /* GANTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GANTracker.h; path = ../../Library/GANTracker.h; sourceTree = SOURCE_ROOT; }; + 7D7132010F764A2900464816 /* libGoogleAnalytics.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAnalytics.a; path = ../../Library/libGoogleAnalytics.a; sourceTree = SOURCE_ROOT; }; + 7D7132140F764B7000464816 /* libsqlite3.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.0.dylib; path = usr/lib/libsqlite3.0.dylib; sourceTree = SDKROOT; }; + 7D7878200F8C367B00F05D01 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, + 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, + 7D7132020F764A2900464816 /* libGoogleAnalytics.a in Frameworks */, + 7D7132150F764B7000464816 /* libsqlite3.0.dylib in Frameworks */, + 7D7878210F8C367B00F05D01 /* CFNetwork.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + 1D3623240D0F684500981E51 /* BasicExampleAppDelegate.h */, + 1D3623250D0F684500981E51 /* BasicExampleAppDelegate.m */, + ); + path = Classes; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 1D6058910D05DD3D006BFB54 /* BasicExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { + isa = PBXGroup; + children = ( + 7D7131FF0F764A0200464816 /* Google Analytics */, + 080E96DDFE201D6D7F000001 /* Classes */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = CustomTemplate; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32CA4F630368D1EE00C91783 /* BasicExample_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 28AD733E0D9D9553002E5188 /* MainWindow.xib */, + 8D1107310486CEB800E47090 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7D7878200F8C367B00F05D01 /* CFNetwork.framework */, + 7D7132140F764B7000464816 /* libsqlite3.0.dylib */, + 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, + 1D30AB110D05D00D00671497 /* Foundation.framework */, + 288765FC0DF74451002DB57D /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7D7131FF0F764A0200464816 /* Google Analytics */ = { + isa = PBXGroup; + children = ( + 7D7132000F764A2900464816 /* GANTracker.h */, + 7D7132010F764A2900464816 /* libGoogleAnalytics.a */, + ); + name = "Google Analytics"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1D6058900D05DD3D006BFB54 /* BasicExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "BasicExample" */; + buildPhases = ( + 1D60588D0D05DD3D006BFB54 /* Resources */, + 1D60588E0D05DD3D006BFB54 /* Sources */, + 1D60588F0D05DD3D006BFB54 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = BasicExample; + productName = BasicExample; + productReference = 1D6058910D05DD3D006BFB54 /* BasicExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BasicExample" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1D6058900D05DD3D006BFB54 /* BasicExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1D60588D0D05DD3D006BFB54 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1D60588E0D05DD3D006BFB54 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D60589B0D05DD56006BFB54 /* main.m in Sources */, + 1D3623260D0F684500981E51 /* BasicExampleAppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1D6058940D05DD3E006BFB54 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = BasicExample_Prefix.pch; + INFOPLIST_FILE = Info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../Library\"", + ); + PRODUCT_NAME = BasicExample; + }; + name = Debug; + }; + 1D6058950D05DD3E006BFB54 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = BasicExample_Prefix.pch; + INFOPLIST_FILE = Info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../Library\"", + ); + PRODUCT_NAME = BasicExample; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = iphoneos4.2; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + PREBINDING = NO; + SDKROOT = iphoneos4.2; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "BasicExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D6058940D05DD3E006BFB54 /* Debug */, + 1D6058950D05DD3E006BFB54 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BasicExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/BasicExample_Prefix.pch b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/BasicExample_Prefix.pch new file mode 100644 index 0000000..cbb4a85 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/BasicExample_Prefix.pch @@ -0,0 +1,11 @@ +// +// BasicExample_Prefix.pch +// Google Analytics iOS SDK. +// +// Copyright 2009 Google Inc. All rights reserved. +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Classes/BasicExampleAppDelegate.h b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Classes/BasicExampleAppDelegate.h new file mode 100644 index 0000000..2b7a1c1 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Classes/BasicExampleAppDelegate.h @@ -0,0 +1,17 @@ +// +// BasicExampleAppDelegate.h +// Google Analytics iOS SDK. +// +// Copyright 2009 Google Inc. All rights reserved. +// + +#import + +@interface BasicExampleAppDelegate : NSObject { + UIWindow *window_; +} + +@property (nonatomic, retain) IBOutlet UIWindow *window; + +@end + diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Classes/BasicExampleAppDelegate.m b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Classes/BasicExampleAppDelegate.m new file mode 100644 index 0000000..be9f2d5 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Classes/BasicExampleAppDelegate.m @@ -0,0 +1,57 @@ +// +// BasicExampleAppDelegate.m +// Google Analytics iOS SDK. +// +// Copyright 2009 Google Inc. All rights reserved. +// + +#import "BasicExampleAppDelegate.h" + +#import "GANTracker.h" + +// Dispatch period in seconds +static const NSInteger kGANDispatchPeriodSec = 10; +// ************************************************************************** +// PLEASE REPLACE WITH YOUR ACCOUNT DETAILS. +// ************************************************************************** +static NSString* const kAnalyticsAccountId = @"UA-00000000-1"; + +@implementation BasicExampleAppDelegate + +@synthesize window = window_; + +- (void)applicationDidFinishLaunching:(UIApplication *)application { + [[GANTracker sharedTracker] startTrackerWithAccountID:kAnalyticsAccountId + dispatchPeriod:kGANDispatchPeriodSec + delegate:nil]; + NSError *error; + + if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1 + name:@"iOS1" + value:@"iv1" + withError:&error]) { + NSLog(@"error in setCustomVariableAtIndex"); + } + + if (![[GANTracker sharedTracker] trackEvent:@"Application iOS" + action:@"Launch iOS" + label:@"Example iOS" + value:99 + withError:&error]) { + NSLog(@"error in trackEvent"); + } + + if (![[GANTracker sharedTracker] trackPageview:@"/app_entry_point" + withError:&error]) { + NSLog(@"error in trackPageview"); + } + [window_ makeKeyAndVisible]; +} + +- (void)dealloc { + [[GANTracker sharedTracker] stopTracker]; + [window_ release]; + [super dealloc]; +} + +@end diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Info.plist b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Info.plist new file mode 100644 index 0000000..b9d8264 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.google.public.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + NSMainNibFile + MainWindow + + diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/MainWindow.xib b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/MainWindow.xib new file mode 100644 index 0000000..fc8c079 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/MainWindow.xib @@ -0,0 +1,242 @@ + + + + 528 + 9G55 + 672 + 949.43 + 353.00 + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + IBFilesOwner + + + IBFirstResponder + + + + + 1316 + + YES + + + 1298 + + YES + + + 1316 + {{87, 193}, {141, 62}} + + + 1 + MC44NDEyNjk4NSAwLjg0MTI2OTg1IDAuODQxMjY5ODUAA + + NO + NO + NO + NO + 0 + 0 + Google Analytics Example + + 1 + MCAwIDAAA + + 1 + YES + YES + 1.600000e+01 + + + + {{0, 20}, {320, 460}} + + + 1 + MC44NDEyNjk4NSAwLjg0MTI2OTg1IDAuODQxMjY5ODUAA + + NO + + + + {320, 480} + + + 1 + MSAxIDEAA + + NO + NO + + + + + + YES + + + delegate + + + + 4 + + + + window + + + + 5 + + + + + YES + + 0 + + YES + + + + + + 2 + + + YES + + + + + + -1 + + + RmlsZSdzIE93bmVyA + + + 3 + + + + + -2 + + + + + 10 + + + YES + + + + + + 11 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 10.IBPluginDependency + 11.IBPluginDependency + 2.IBAttributePlaceholdersKey + 2.IBEditorWindowLastContentRect + 2.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + + + YES + UIApplication + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + YES + + YES + + + YES + + + {{438, 320}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + BasicExampleAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 11 + + + + YES + + BasicExampleAppDelegate + NSObject + + window + UIWindow + + + IBProjectSource + Classes/BasicExampleAppDelegate.h + + + + BasicExampleAppDelegate + NSObject + + IBUserSource + + + + + + 0 + BasicExample.xcodeproj + 3 + + diff --git a/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/main.m b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/main.m new file mode 100644 index 0000000..363f191 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Examples/BasicExample/main.m @@ -0,0 +1,15 @@ +// +// main.m +// Google Analytics iOS SDK. +// +// Copyright 2009 Google Inc. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) { + NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; + int retVal = UIApplicationMain(argc, argv, nil, nil); + [pool release]; + return retVal; +} diff --git a/Projectfiles/lib/Google Analytics SDK/GAWrapper.h b/Projectfiles/lib/Google Analytics SDK/GAWrapper.h new file mode 100644 index 0000000..1e5c1db --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/GAWrapper.h @@ -0,0 +1,53 @@ +// +// GAWrapper.h +// Conquer +// +// Created by Stephen Johnson on 5/1/12. +// Copyright (c) 2012 Conquer, LLC. All rights reserved. +// + +#ifndef Conquer_GAWrapper_h +#define Conquer_GAWrapper_h + +#import "GANTracker.h" + + + +static NSInteger GA_CUSTOM_VARIABLE_INDEX = 1; + +#define GALogEvent(_category, _action, _label, _value) (^{\ + NSError *error;\ + if (![[GANTracker sharedTracker] \ + trackEvent:_category\ + action:_action\ + label:_label\ + value:_value\ + withError:&error]) {\ + NSLog(@"GA: error in trackEvent: %@", error);\ + }\ +})(); + + +#define GASetVar(_name, _value) (^{\ + NSError *error;\ + if (![[GANTracker sharedTracker] \ + setCustomVariableAtIndex: GA_CUSTOM_VARIABLE_INDEX++\ + name:_name\ + value:_value\ + withError:&error]) {\ + NSLog(@"GA: error in setCustomVariableAtIndex: %@", error);\ + }\ +})(); + + +#define GALogPageView(_name) (^{\ + NSError *error;\ + if (![[GANTracker sharedTracker] \ + trackPageview: _name\ + withError:&error]) {\ + NSLog(@"GA: error in trackPageView: %@", error);\ + }\ +})(); + + +#endif diff --git a/Projectfiles/lib/Google Analytics SDK/Library/GANTracker.h b/Projectfiles/lib/Google Analytics SDK/Library/GANTracker.h new file mode 100644 index 0000000..4a2bbd5 --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/Library/GANTracker.h @@ -0,0 +1,213 @@ +// +// GANTracker.h +// Google Analytics iOS SDK +// Version: 1.4 +// +// Copyright 2009 Google Inc. All rights reserved. +// + +// Error constants +extern NSString* const kGANTrackerErrorDomain; + +typedef enum { + // This error code is returned when input to a method is incorrect. + kGANTrackerInvalidInputError = 0xbade7a9, + + // This error code is returned when the number of hits generated in a session + // exceeds the limit (currently 500). + kGANTrackerEventsPerSessionLimitError = 0xbad5704e, + + // This error code is returned if the method called requires that the tracker + // be started. + kGANTrackerNotStartedError = 0xbada55, + + // This error code is returned if the method call resulted in some sort of + // database error. + kGANTrackerDatabaseError = 0xbadbaddb +} GANErrorCode; + +// Custom Variable constants +#define kGANMaxCustomVariables 5 +#define kGANMaxCustomVariableLength 64 + +typedef enum { + kGANVisitorScope = 1U, + kGANSessionScope = 2U, + kGANPageScope = 3U +} GANCVScope; + +@protocol GANTrackerDelegate; +typedef struct __GANTrackerPrivate GANTrackerPrivate; + +// Google Analytics tracker interface. Tracked pageviews and events are stored +// in a persistent store and dispatched in the background to the server. +@interface GANTracker : NSObject { + @private + GANTrackerPrivate *private_; + BOOL debug_; + BOOL dryRun_; + BOOL anonymizeIp_; + NSUInteger sampleRate_; +} + +// If the debug flag is set, debug messages will be written to the log. +// It is useful for debugging calls to the Google Analytics SDK. +// By default, the debug flag is disabled. +@property(readwrite) BOOL debug; + +// If the dryRun flag is set, hits will not be sent to Google Analytics. +// It is useful for testing and debugging calls to the Google Analytics SDK. +// By default, the dryRun flag is disabled. +@property(readwrite) BOOL dryRun; + +// If the anonymizeIp flag is set, the SDK will anonymize information sent to +// Google Analytics by setting the last octet of the IP address to zero prior +// to its storage and/or submission. +// By default, the anonymizeIp flag is disabled. +@property(readwrite) BOOL anonymizeIp; + +// The sampleRate parameter controls the probability that the visitor will be +// sampled. When a visitor is not sampled, no data is submitted to Google +// Analytics about that visitor's activity. If your application is subject to +// heavy traffic spikes, you may wish to adjust the sample rate to ensure +// uninterrupted report tracking. Sampling in Google Analytics occurs +// consistently across unique visitors, ensuring integrity in trending and +// reporting even when sampling is enabled, because unique visitors remain +// included or excluded from the sample, as set from the initiation of +// sampling. +// +// By default, sampleRate is 100, which signifies no sampling. sampleRate may +// be set to any integer value between 0 and 100, inclusive. A value of 90 +// requests 90% of visitors to be sampled (10% of visitors to be sampled out). +@property(readwrite) NSUInteger sampleRate; + +// Singleton instance of this class for convenience. ++ (GANTracker *)sharedTracker; + +// Start the tracker with the specified Google Analytics account ID (the string +// that begins with "UA-") and desired automatic dispatch period (in seconds). +// The dispatcher will dispatch events, if any, every |dispatchPeriod| seconds. +// If a non-positive (e.g. 0 or -1) dispatch period is given, automatic +// dispatch will not be enabled, and the application will need to dispatch +// events manually. An optional delegate may be supplied. +- (void)startTrackerWithAccountID:(NSString *)accountID + dispatchPeriod:(NSInteger)dispatchPeriod + delegate:(id)delegate; + +// Stop the tracker. +- (void)stopTracker; + +// Track a page view. Returns YES on success or NO on error (with |error| +// set to the specific error, or nil). You may pass NULL for |error| if you +// don't care about the error. Note that trackPageview will prepend a '/' +// character if pageURL doesn't start with one. +- (BOOL)trackPageview:(NSString *)pageURL + withError:(NSError **)error; + +// Track an event. The category and action are required. The label and +// value are optional (specify nil for no label and -1 or any negative integer +// for no value). Returns YES on success or NO on error (with |error| +// set to the specific error, or nil). You may pass NULL for |error| if you +// don't care about the error. +- (BOOL)trackEvent:(NSString *)category + action:(NSString *)action + label:(NSString *)label + value:(NSInteger)value + withError:(NSError **)error; + +// Set a custom variable. visitor and session scoped custom variables are stored +// for later use. Session and page scoped custom variables are attached to each +// event. Visitor scoped custom variables are sent only on the first event for +// a session. Returns YES on success or NO on error (with |error| +// set to the specific error, or nil). You may pass NULL for |error| if you +// don't care about the error. +- (BOOL)setCustomVariableAtIndex:(NSUInteger)index + name:(NSString *)name + value:(NSString *)value + scope:(GANCVScope)scope + withError:(NSError **)error; + +// Set a page scoped custom variable. The variable set is returned with the +// next event only. It will overwrite any existing visitor or session scoped +// custom variables. Returns YES on success or NO on error (with |error| +// set to the specific error, or nil). You may pass NULL for |error| if you +// don't care about the error. +- (BOOL)setCustomVariableAtIndex:(NSUInteger)index + name:(NSString *)name + value:(NSString *)value + withError:(NSError **)error; + +// Returns the value of the custom variable at the index requested. Returns +// nil if no variable is found or index is out of range. +- (NSString *)getVisitorCustomVarAtIndex:(NSUInteger)index; + +// Add a transaction to the Ecommerce buffer. If a transaction with an orderId +// of orderID is already present, it will be replaced by a new one. All +// transactions and all the items in the buffer will be queued for dispatch once +// trackTransactions is called. Returns YES on success or NO on error +// (with |error| set to the specific error, or nil). You may pass NULL for +// |error| if you don't care about the error. +- (BOOL)addTransaction:(NSString *)orderID + totalPrice:(double)totalPrice + storeName:(NSString *)storeName + totalTax:(double)totalTax + shippingCost:(double)shippingCost + withError:(NSError **)error; + +// Add an item to the Ecommerce buffer for the transaction whose orderId matches +// the input parameter orderID. If no transaction exists, one will be created. +// If an item with the same itemSKU exists, it will be replaced with a new item. +// All the transactions and items in the Ecommerce buffer will be queued for +// dispatch once trackTransactions is called. Returns YES on success or NO on +// error (with |error| set to the specific error, or nil). You may pass NULL +// for |error| if you don'tcare about the error. +- (BOOL)addItem:(NSString *)orderID + itemSKU:(NSString *)itemSKU + itemPrice:(double)itemPrice + itemCount:(double)itemCount + itemName:(NSString *)itemName + itemCategory:(NSString *)itemCategory + withError:(NSError **)error; + +// Tracks all the Ecommerce hits pending in the Ecommerce buffer. +// Returns YES on success or NO on error (with |error| +// set to the specific error, or nil). You may pass NULL for |error| if you +// don't care about the error. +- (BOOL)trackTransactions:(NSError **)error; + +// Clears out the buffer of pending Ecommerce hits without sending them. +// Returns YES on success or NO on error (with |error| +// set to the specific error, or nil). You may pass NULL for |error| if you +// don't care about the error. +- (BOOL)clearTransactions:(NSError **)error; + +// Sets the campaign to the input parameter referrer. All hits going forward +// will have this campaign attached. Note that calling setReferrer will trigger +// a new session. +- (BOOL)setReferrer:(NSString *)referrer withError:(NSError **)error; + +// Manually dispatch pageviews/events to the server. Returns YES if +// a new dispatch starts. +- (BOOL)dispatch; + +// Manually dispatch pageviews/events to the server synchronously until timeout +// time has elapsed. Returns YES upon completion if there were hits to send and +// all hits were sent successfully. Call this method with care as it will block +// all GANTracker activity until it is done. +- (BOOL)dispatchSynchronous:(NSTimeInterval)timeout; + +@end + +@protocol GANTrackerDelegate + +// Invoked when a hit has been dispatched. +- (void)hitDispatched:(NSString *)hitString; + +// Invoked when a dispatch completes. Reports the number of hits +// dispatched and the number of hits that failed to dispatch. Failed +// hits will be retried on next dispatch. +- (void)trackerDispatchDidComplete:(GANTracker *)tracker + eventsDispatched:(NSUInteger)hitsDispatched + eventsFailedDispatch:(NSUInteger)hitsFailedDispatch; + +@end diff --git a/Projectfiles/lib/Google Analytics SDK/Library/libGoogleAnalytics.a b/Projectfiles/lib/Google Analytics SDK/Library/libGoogleAnalytics.a new file mode 100644 index 0000000..3e72ba2 Binary files /dev/null and b/Projectfiles/lib/Google Analytics SDK/Library/libGoogleAnalytics.a differ diff --git a/Projectfiles/lib/Google Analytics SDK/Library/libGoogleAnalytics_NoThumb.a b/Projectfiles/lib/Google Analytics SDK/Library/libGoogleAnalytics_NoThumb.a new file mode 100644 index 0000000..22458c0 Binary files /dev/null and b/Projectfiles/lib/Google Analytics SDK/Library/libGoogleAnalytics_NoThumb.a differ diff --git a/Projectfiles/lib/Google Analytics SDK/ReadMe.txt b/Projectfiles/lib/Google Analytics SDK/ReadMe.txt new file mode 100644 index 0000000..223b2fd --- /dev/null +++ b/Projectfiles/lib/Google Analytics SDK/ReadMe.txt @@ -0,0 +1,71 @@ +Google Analytics iOS SDK version 1.4. + +Copyright 2011 Google, Inc. All rights reserved. + +================================================================================ +DESCRIPTION: + +This SDK enables developers to add Google Analytics tracking to applications. +The tracker code is packaged as a single header file and static library. Drag +the GANTracker.h and libGoogleAnalytics.a files into your XCode project. Include +the CFNetwork framework in your project and link against libsqlite3.dylib. +See the Examples/BasicExample application for an illustration of how to use +page tracking and event tracking. + +You will need an Analytics Account ID to properly initialize the GANTracker +object. We recommend you create a new website profile, by clicking "+ Add new +profile" from the main Overview page in Google Analytics (google.com/analytics). +Select "new domain" in the wizard, and choose a descriptive but fake URL for +your app. The Web Property/Account ID will take the form "UA-0000000-1". + +You must indicate to your users, either in the app itself or in your terms of +service, that you reserve the right to anonymously track and report a user's +activity inside of your app. + +NoThumb Support: + +This version of the SDK provides a NoThumb library as well as the standard +Library. You should use only one of the library files provided. Use the file +libGoogleAnalytics_NoThumb.a if you need NoThumb support. Otherwise, you should +use the file libGoogleAnalytics.a. + +Implementation Details: + +Pageviews and events are stored in an SQLite database and dispatched to the +Google Analytics servers either periodically at a rate determined by the +developer or manually. A battery efficient strategy may be to "piggy-back" +a dispatch just after the application needs to perform network activity. +Dispatching happens by pipelining HTTP requests down a single connection +(one request per pageview/event with a maximum of 30 per dispatch). + +================================================================================ +BUILD REQUIREMENTS: + +Mac OS X v10.6+, XCode 3.2.3+ (iOS 4.0 SDK), iPhone OS 3.0+ + +================================================================================ +RUNTIME REQUIREMENTS: + +Mac OS X v10.6+, iPhone OS 3.0+ + +================================================================================ +PACKAGING LIST: + +Library/ + GANTracker.h + libGoogleAnalytics.a + libGoogleAnalytics_NoThumb.a + +Examples/ + BasicExample/ + BasicExample.xcodeproj/ + project.pbxproj + BasicExample_Prefix.pch + Classes/ + BasicExampleAppDelegate.h + BasicExampleAppDelegate.m + Info.plist + MainWindow.xib + main.m + +================================================================================