Initial commit
parent
55baa9dae1
commit
0891cd8242
@ -0,0 +1,636 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
EC760B97178E976E00095B31 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760B96178E976E00095B31 /* Foundation.framework */; };
|
||||
EC760B99178E976E00095B31 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760B98178E976E00095B31 /* CoreGraphics.framework */; };
|
||||
EC760B9B178E976E00095B31 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760B9A178E976E00095B31 /* UIKit.framework */; };
|
||||
EC760BA1178E976E00095B31 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EC760B9F178E976E00095B31 /* InfoPlist.strings */; };
|
||||
EC760BA3178E976E00095B31 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BA2178E976E00095B31 /* main.m */; };
|
||||
EC760BA7178E976E00095B31 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BA6178E976E00095B31 /* AppDelegate.m */; };
|
||||
EC760BAA178E976E00095B31 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC760BA8178E976E00095B31 /* Main_iPhone.storyboard */; };
|
||||
EC760BAD178E976E00095B31 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC760BAB178E976E00095B31 /* Main_iPad.storyboard */; };
|
||||
EC760BB0178E976E00095B31 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BAF178E976E00095B31 /* ViewController.m */; };
|
||||
EC760BB2178E976E00095B31 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC760BB1178E976E00095B31 /* Images.xcassets */; };
|
||||
EC760BB9178E976E00095B31 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760BB8178E976E00095B31 /* XCTest.framework */; };
|
||||
EC760BBA178E976E00095B31 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760B96178E976E00095B31 /* Foundation.framework */; };
|
||||
EC760BBB178E976E00095B31 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760B9A178E976E00095B31 /* UIKit.framework */; };
|
||||
EC760BC3178E976E00095B31 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EC760BC1178E976E00095B31 /* InfoPlist.strings */; };
|
||||
EC760BC5178E976E00095B31 /* EonaCatToolsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BC4178E976E00095B31 /* EonaCatToolsTests.m */; };
|
||||
EC760BEC178E97CB00095B31 /* ExceptionsLogger.strings in Resources */ = {isa = PBXBuildFile; fileRef = EC760BE2178E97CB00095B31 /* ExceptionsLogger.strings */; };
|
||||
EC760BED178E97CB00095B31 /* ExceptionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BE6178E97CB00095B31 /* ExceptionHandler.m */; };
|
||||
EC760BEE178E97CB00095B31 /* ExceptionLogger-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC760BE7178E97CB00095B31 /* ExceptionLogger-iPad.xib */; };
|
||||
EC760BEF178E97CB00095B31 /* ExceptionLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BE9178E97CB00095B31 /* ExceptionLogger.m */; };
|
||||
EC760BF0178E97CB00095B31 /* ExceptionLogger.png in Resources */ = {isa = PBXBuildFile; fileRef = EC760BEA178E97CB00095B31 /* ExceptionLogger.png */; };
|
||||
EC760BF1178E97CB00095B31 /* ExceptionLogger.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC760BEB178E97CB00095B31 /* ExceptionLogger.xib */; };
|
||||
EC760BF7178E989000095B31 /* DeviceIdentifier.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BF4178E989000095B31 /* DeviceIdentifier.m */; };
|
||||
EC760BF8178E989000095B31 /* SHA1.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BF6178E989000095B31 /* SHA1.m */; };
|
||||
EC760C05178EB5FB00095B31 /* LockController.strings in Resources */ = {isa = PBXBuildFile; fileRef = EC760BFA178EB5FB00095B31 /* LockController.strings */; };
|
||||
EC760C06178EB5FB00095B31 /* LockController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760BFE178EB5FB00095B31 /* LockController.m */; };
|
||||
EC760C07178EB5FB00095B31 /* Popup.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760C01178EB5FB00095B31 /* Popup.m */; };
|
||||
EC760C08178EB5FB00095B31 /* Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = EC760C04178EB5FB00095B31 /* Toast.m */; };
|
||||
EC760C0B178EB9C800095B31 /* toast.png in Resources */ = {isa = PBXBuildFile; fileRef = EC760C0A178EB9C800095B31 /* toast.png */; };
|
||||
EC760C0D178EBBE300095B31 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC760C0C178EBBE300095B31 /* AudioToolbox.framework */; };
|
||||
EC760C0F178EBCD200095B31 /* toast.wav in Resources */ = {isa = PBXBuildFile; fileRef = EC760C0E178EBCD200095B31 /* toast.wav */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
EC760BBC178E976E00095B31 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = EC760B8B178E976E00095B31 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = EC760B92178E976E00095B31;
|
||||
remoteInfo = EonaCatTools;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
EC760B93178E976E00095B31 /* EonaCatTools.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EonaCatTools.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EC760B96178E976E00095B31 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
EC760B98178E976E00095B31 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
EC760B9A178E976E00095B31 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
EC760B9E178E976E00095B31 /* EonaCatTools-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EonaCatTools-Info.plist"; sourceTree = "<group>"; };
|
||||
EC760BA0178E976E00095B31 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
EC760BA2178E976E00095B31 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
EC760BA4178E976E00095B31 /* EonaCatTools-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EonaCatTools-Prefix.pch"; sourceTree = "<group>"; };
|
||||
EC760BA5178E976E00095B31 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
EC760BA6178E976E00095B31 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
EC760BA9178E976E00095B31 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = "<group>"; };
|
||||
EC760BAC178E976E00095B31 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPad.storyboard; sourceTree = "<group>"; };
|
||||
EC760BAE178E976E00095B31 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
EC760BAF178E976E00095B31 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
EC760BB1178E976E00095B31 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
EC760BB7178E976E00095B31 /* EonaCatToolsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EonaCatToolsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EC760BB8178E976E00095B31 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
EC760BC0178E976E00095B31 /* EonaCatToolsTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EonaCatToolsTests-Info.plist"; sourceTree = "<group>"; };
|
||||
EC760BC2178E976E00095B31 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
EC760BC4178E976E00095B31 /* EonaCatToolsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EonaCatToolsTests.m; sourceTree = "<group>"; };
|
||||
EC760BE3178E97CB00095B31 /* Dutch */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Dutch; path = Dutch.lproj/ExceptionsLogger.strings; sourceTree = "<group>"; };
|
||||
EC760BE4178E97CB00095B31 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/ExceptionsLogger.strings; sourceTree = "<group>"; };
|
||||
EC760BE5178E97CB00095B31 /* ExceptionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionHandler.h; sourceTree = "<group>"; };
|
||||
EC760BE6178E97CB00095B31 /* ExceptionHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExceptionHandler.m; sourceTree = "<group>"; };
|
||||
EC760BE7178E97CB00095B31 /* ExceptionLogger-iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ExceptionLogger-iPad.xib"; sourceTree = "<group>"; };
|
||||
EC760BE8178E97CB00095B31 /* ExceptionLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionLogger.h; sourceTree = "<group>"; };
|
||||
EC760BE9178E97CB00095B31 /* ExceptionLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExceptionLogger.m; sourceTree = "<group>"; };
|
||||
EC760BEA178E97CB00095B31 /* ExceptionLogger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ExceptionLogger.png; sourceTree = "<group>"; };
|
||||
EC760BEB178E97CB00095B31 /* ExceptionLogger.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExceptionLogger.xib; sourceTree = "<group>"; };
|
||||
EC760BF3178E989000095B31 /* DeviceIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceIdentifier.h; sourceTree = "<group>"; };
|
||||
EC760BF4178E989000095B31 /* DeviceIdentifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeviceIdentifier.m; sourceTree = "<group>"; };
|
||||
EC760BF5178E989000095B31 /* SHA1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SHA1.h; sourceTree = "<group>"; };
|
||||
EC760BF6178E989000095B31 /* SHA1.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SHA1.m; sourceTree = "<group>"; };
|
||||
EC760BFB178EB5FB00095B31 /* Dutch */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Dutch; path = Dutch.lproj/LockController.strings; sourceTree = "<group>"; };
|
||||
EC760BFC178EB5FB00095B31 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/LockController.strings; sourceTree = "<group>"; };
|
||||
EC760BFD178EB5FB00095B31 /* LockController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LockController.h; sourceTree = "<group>"; };
|
||||
EC760BFE178EB5FB00095B31 /* LockController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LockController.m; sourceTree = "<group>"; };
|
||||
EC760C00178EB5FB00095B31 /* Popup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Popup.h; sourceTree = "<group>"; };
|
||||
EC760C01178EB5FB00095B31 /* Popup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Popup.m; sourceTree = "<group>"; };
|
||||
EC760C03178EB5FB00095B31 /* Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Toast.h; sourceTree = "<group>"; };
|
||||
EC760C04178EB5FB00095B31 /* Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Toast.m; sourceTree = "<group>"; };
|
||||
EC760C0A178EB9C800095B31 /* toast.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = toast.png; sourceTree = "<group>"; };
|
||||
EC760C0C178EBBE300095B31 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
EC760C0E178EBCD200095B31 /* toast.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = toast.wav; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
EC760B90178E976E00095B31 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EC760C0D178EBBE300095B31 /* AudioToolbox.framework in Frameworks */,
|
||||
EC760B99178E976E00095B31 /* CoreGraphics.framework in Frameworks */,
|
||||
EC760B9B178E976E00095B31 /* UIKit.framework in Frameworks */,
|
||||
EC760B97178E976E00095B31 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
EC760BB4178E976E00095B31 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EC760BB9178E976E00095B31 /* XCTest.framework in Frameworks */,
|
||||
EC760BBB178E976E00095B31 /* UIKit.framework in Frameworks */,
|
||||
EC760BBA178E976E00095B31 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
EC760B8A178E976E00095B31 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760B9C178E976E00095B31 /* EonaCatTools */,
|
||||
EC760BBE178E976E00095B31 /* EonaCatToolsTests */,
|
||||
EC760B95178E976E00095B31 /* Frameworks */,
|
||||
EC760B94178E976E00095B31 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760B94178E976E00095B31 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760B93178E976E00095B31 /* EonaCatTools.app */,
|
||||
EC760BB7178E976E00095B31 /* EonaCatToolsTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760B95178E976E00095B31 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760C0C178EBBE300095B31 /* AudioToolbox.framework */,
|
||||
EC760B96178E976E00095B31 /* Foundation.framework */,
|
||||
EC760B98178E976E00095B31 /* CoreGraphics.framework */,
|
||||
EC760B9A178E976E00095B31 /* UIKit.framework */,
|
||||
EC760BB8178E976E00095B31 /* XCTest.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760B9C178E976E00095B31 /* EonaCatTools */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760C09178EB9C800095B31 /* Images */,
|
||||
EC760BE0178E97CB00095B31 /* Tools */,
|
||||
EC760BA5178E976E00095B31 /* AppDelegate.h */,
|
||||
EC760BA6178E976E00095B31 /* AppDelegate.m */,
|
||||
EC760BA8178E976E00095B31 /* Main_iPhone.storyboard */,
|
||||
EC760BAB178E976E00095B31 /* Main_iPad.storyboard */,
|
||||
EC760BAE178E976E00095B31 /* ViewController.h */,
|
||||
EC760BAF178E976E00095B31 /* ViewController.m */,
|
||||
EC760BB1178E976E00095B31 /* Images.xcassets */,
|
||||
EC760B9D178E976E00095B31 /* Supporting Files */,
|
||||
);
|
||||
path = EonaCatTools;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760B9D178E976E00095B31 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760B9E178E976E00095B31 /* EonaCatTools-Info.plist */,
|
||||
EC760B9F178E976E00095B31 /* InfoPlist.strings */,
|
||||
EC760BA2178E976E00095B31 /* main.m */,
|
||||
EC760BA4178E976E00095B31 /* EonaCatTools-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BBE178E976E00095B31 /* EonaCatToolsTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760BC4178E976E00095B31 /* EonaCatToolsTests.m */,
|
||||
EC760BBF178E976E00095B31 /* Supporting Files */,
|
||||
);
|
||||
path = EonaCatToolsTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BBF178E976E00095B31 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760BC0178E976E00095B31 /* EonaCatToolsTests-Info.plist */,
|
||||
EC760BC1178E976E00095B31 /* InfoPlist.strings */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BE0178E97CB00095B31 /* Tools */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760BF9178EB5FB00095B31 /* Lockscreen */,
|
||||
EC760BFF178EB5FB00095B31 /* Popup */,
|
||||
EC760C02178EB5FB00095B31 /* Toast */,
|
||||
EC760BF2178E989000095B31 /* uniqueIdentifier */,
|
||||
EC760BE1178E97CB00095B31 /* ExceptionsLogger */,
|
||||
);
|
||||
path = Tools;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BE1178E97CB00095B31 /* ExceptionsLogger */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760BE2178E97CB00095B31 /* ExceptionsLogger.strings */,
|
||||
EC760BE5178E97CB00095B31 /* ExceptionHandler.h */,
|
||||
EC760BE6178E97CB00095B31 /* ExceptionHandler.m */,
|
||||
EC760BE7178E97CB00095B31 /* ExceptionLogger-iPad.xib */,
|
||||
EC760BE8178E97CB00095B31 /* ExceptionLogger.h */,
|
||||
EC760BE9178E97CB00095B31 /* ExceptionLogger.m */,
|
||||
EC760BEA178E97CB00095B31 /* ExceptionLogger.png */,
|
||||
EC760BEB178E97CB00095B31 /* ExceptionLogger.xib */,
|
||||
);
|
||||
path = ExceptionsLogger;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BF2178E989000095B31 /* uniqueIdentifier */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760BF3178E989000095B31 /* DeviceIdentifier.h */,
|
||||
EC760BF4178E989000095B31 /* DeviceIdentifier.m */,
|
||||
EC760BF5178E989000095B31 /* SHA1.h */,
|
||||
EC760BF6178E989000095B31 /* SHA1.m */,
|
||||
);
|
||||
path = uniqueIdentifier;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BF9178EB5FB00095B31 /* Lockscreen */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760BFA178EB5FB00095B31 /* LockController.strings */,
|
||||
EC760BFD178EB5FB00095B31 /* LockController.h */,
|
||||
EC760BFE178EB5FB00095B31 /* LockController.m */,
|
||||
);
|
||||
path = Lockscreen;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BFF178EB5FB00095B31 /* Popup */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760C00178EB5FB00095B31 /* Popup.h */,
|
||||
EC760C01178EB5FB00095B31 /* Popup.m */,
|
||||
);
|
||||
path = Popup;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760C02178EB5FB00095B31 /* Toast */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760C03178EB5FB00095B31 /* Toast.h */,
|
||||
EC760C0E178EBCD200095B31 /* toast.wav */,
|
||||
EC760C04178EB5FB00095B31 /* Toast.m */,
|
||||
);
|
||||
path = Toast;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760C09178EB9C800095B31 /* Images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC760C0A178EB9C800095B31 /* toast.png */,
|
||||
);
|
||||
name = Images;
|
||||
path = EonaCatTools/Images;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
EC760B92178E976E00095B31 /* EonaCatTools */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = EC760BC8178E976E00095B31 /* Build configuration list for PBXNativeTarget "EonaCatTools" */;
|
||||
buildPhases = (
|
||||
EC760B8F178E976E00095B31 /* Sources */,
|
||||
EC760B90178E976E00095B31 /* Frameworks */,
|
||||
EC760B91178E976E00095B31 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = EonaCatTools;
|
||||
productName = EonaCatTools;
|
||||
productReference = EC760B93178E976E00095B31 /* EonaCatTools.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
EC760BB6178E976E00095B31 /* EonaCatToolsTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = EC760BCB178E976E00095B31 /* Build configuration list for PBXNativeTarget "EonaCatToolsTests" */;
|
||||
buildPhases = (
|
||||
EC760BB3178E976E00095B31 /* Sources */,
|
||||
EC760BB4178E976E00095B31 /* Frameworks */,
|
||||
EC760BB5178E976E00095B31 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
EC760BBD178E976E00095B31 /* PBXTargetDependency */,
|
||||
);
|
||||
name = EonaCatToolsTests;
|
||||
productName = EonaCatToolsTests;
|
||||
productReference = EC760BB7178E976E00095B31 /* EonaCatToolsTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
EC760B8B178E976E00095B31 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0500;
|
||||
ORGANIZATIONNAME = EonaCat;
|
||||
TargetAttributes = {
|
||||
EC760BB6178E976E00095B31 = {
|
||||
TestTargetID = EC760B92178E976E00095B31;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = EC760B8E178E976E00095B31 /* Build configuration list for PBXProject "EonaCatTools" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
Dutch,
|
||||
English,
|
||||
);
|
||||
mainGroup = EC760B8A178E976E00095B31;
|
||||
productRefGroup = EC760B94178E976E00095B31 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
EC760B92178E976E00095B31 /* EonaCatTools */,
|
||||
EC760BB6178E976E00095B31 /* EonaCatToolsTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
EC760B91178E976E00095B31 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EC760BAD178E976E00095B31 /* Main_iPad.storyboard in Resources */,
|
||||
EC760C05178EB5FB00095B31 /* LockController.strings in Resources */,
|
||||
EC760BB2178E976E00095B31 /* Images.xcassets in Resources */,
|
||||
EC760BEC178E97CB00095B31 /* ExceptionsLogger.strings in Resources */,
|
||||
EC760BF1178E97CB00095B31 /* ExceptionLogger.xib in Resources */,
|
||||
EC760BF0178E97CB00095B31 /* ExceptionLogger.png in Resources */,
|
||||
EC760C0F178EBCD200095B31 /* toast.wav in Resources */,
|
||||
EC760BEE178E97CB00095B31 /* ExceptionLogger-iPad.xib in Resources */,
|
||||
EC760BAA178E976E00095B31 /* Main_iPhone.storyboard in Resources */,
|
||||
EC760BA1178E976E00095B31 /* InfoPlist.strings in Resources */,
|
||||
EC760C0B178EB9C800095B31 /* toast.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
EC760BB5178E976E00095B31 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EC760BC3178E976E00095B31 /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
EC760B8F178E976E00095B31 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EC760C06178EB5FB00095B31 /* LockController.m in Sources */,
|
||||
EC760BB0178E976E00095B31 /* ViewController.m in Sources */,
|
||||
EC760BA7178E976E00095B31 /* AppDelegate.m in Sources */,
|
||||
EC760C07178EB5FB00095B31 /* Popup.m in Sources */,
|
||||
EC760BF7178E989000095B31 /* DeviceIdentifier.m in Sources */,
|
||||
EC760C08178EB5FB00095B31 /* Toast.m in Sources */,
|
||||
EC760BED178E97CB00095B31 /* ExceptionHandler.m in Sources */,
|
||||
EC760BEF178E97CB00095B31 /* ExceptionLogger.m in Sources */,
|
||||
EC760BA3178E976E00095B31 /* main.m in Sources */,
|
||||
EC760BF8178E989000095B31 /* SHA1.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
EC760BB3178E976E00095B31 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EC760BC5178E976E00095B31 /* EonaCatToolsTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
EC760BBD178E976E00095B31 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = EC760B92178E976E00095B31 /* EonaCatTools */;
|
||||
targetProxy = EC760BBC178E976E00095B31 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
EC760B9F178E976E00095B31 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
EC760BA0178E976E00095B31 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BA8178E976E00095B31 /* Main_iPhone.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
EC760BA9178E976E00095B31 /* Base */,
|
||||
);
|
||||
name = Main_iPhone.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BAB178E976E00095B31 /* Main_iPad.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
EC760BAC178E976E00095B31 /* Base */,
|
||||
);
|
||||
name = Main_iPad.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BC1178E976E00095B31 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
EC760BC2178E976E00095B31 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BE2178E97CB00095B31 /* ExceptionsLogger.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
EC760BE3178E97CB00095B31 /* Dutch */,
|
||||
EC760BE4178E97CB00095B31 /* English */,
|
||||
);
|
||||
name = ExceptionsLogger.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EC760BFA178EB5FB00095B31 /* LockController.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
EC760BFB178EB5FB00095B31 /* Dutch */,
|
||||
EC760BFC178EB5FB00095B31 /* English */,
|
||||
);
|
||||
name = LockController.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
EC760BC6178E976E00095B31 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
EC760BC7178E976E00095B31 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
EC760BC9178E976E00095B31 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "EonaCatTools/EonaCatTools-Prefix.pch";
|
||||
INFOPLIST_FILE = "EonaCatTools/EonaCatTools-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
EC760BCA178E976E00095B31 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "EonaCatTools/EonaCatTools-Prefix.pch";
|
||||
INFOPLIST_FILE = "EonaCatTools/EonaCatTools-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
EC760BCC178E976E00095B31 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EonaCatTools.app/EonaCatTools";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
"$(SYSTEM_APPS_DIR)/Xcode5-DP3.app/Contents/Developer/Library/Frameworks",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "EonaCatTools/EonaCatTools-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "EonaCatToolsTests/EonaCatToolsTests-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
EC760BCD178E976E00095B31 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EonaCatTools.app/EonaCatTools";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
"$(SYSTEM_APPS_DIR)/Xcode5-DP3.app/Contents/Developer/Library/Frameworks",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "EonaCatTools/EonaCatTools-Prefix.pch";
|
||||
INFOPLIST_FILE = "EonaCatToolsTests/EonaCatToolsTests-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = xctest;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
EC760B8E178E976E00095B31 /* Build configuration list for PBXProject "EonaCatTools" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
EC760BC6178E976E00095B31 /* Debug */,
|
||||
EC760BC7178E976E00095B31 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
EC760BC8178E976E00095B31 /* Build configuration list for PBXNativeTarget "EonaCatTools" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
EC760BC9178E976E00095B31 /* Debug */,
|
||||
EC760BCA178E976E00095B31 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
EC760BCB178E976E00095B31 /* Build configuration list for PBXNativeTarget "EonaCatToolsTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
EC760BCC178E976E00095B31 /* Debug */,
|
||||
EC760BCD178E976E00095B31 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = EC760B8B178E976E00095B31 /* Project object */;
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:EonaCatTools.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
Binary file not shown.
@ -0,0 +1,16 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// Created by EonaCat
|
||||
// Copyright 2013 EonaCat. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
#define Delegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])
|
||||
|
||||
@property (strong, nonatomic) UIWindow *window;
|
||||
@property (nonatomic, assign) BOOL iPad;
|
||||
|
||||
@end
|
@ -0,0 +1,55 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// Created by EonaCat
|
||||
// Copyright 2013 EonaCat. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "ExceptionHandler.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
|
||||
self.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
|
||||
|
||||
// Create the exceptionHandler
|
||||
[self performSelector:@selector(setExceptionHandler) withObject:nil afterDelay:0];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)setExceptionHandler
|
||||
{
|
||||
createExceptionHandler(@"YOUREMAILADDRESS", @"");
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application
|
||||
{
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application
|
||||
{
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application
|
||||
{
|
||||
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application
|
||||
{
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application
|
||||
{
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
@end
|
@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4471.1" systemVersion="12E55" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" initialViewController="BYZ-38-t0r">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3697.3"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="xLR-yP-yFW"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="lks-LE-cij"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6hh-MS-PsJ">
|
||||
<rect key="frame" x="190" y="111" width="389" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" size="button"/>
|
||||
<state key="normal" title="Show Exceptions">
|
||||
<color key="titleColor" red="0.1960784314" green="0.30980392159999998" blue="0.52156862749999999" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showExceptionsAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Bm4-NB-oNa"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TDl-wl-Ehg">
|
||||
<rect key="frame" x="190" y="297" width="389" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Throw Exception">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="throwExceptionAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="F32-wy-S73"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YNI-50-nQ1">
|
||||
<rect key="frame" x="190" y="463" width="389" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Show Toast">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showToastAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="zUB-mX-hdE"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pIs-X3-ul6">
|
||||
<rect key="frame" x="190" y="629" width="389" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Show Popup">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showPopupAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="mWc-Jr-cB1"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tuk-v6-JRy">
|
||||
<rect key="frame" x="190" y="795" width="389" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Show LockScreen">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showLockScreenAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="ORX-90-Fny"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="showExceptionsButton" destination="6hh-MS-PsJ" id="Ayv-OD-p6B"/>
|
||||
<outlet property="showLockScreenButton" destination="Tuk-v6-JRy" id="Ufk-Yn-QPG"/>
|
||||
<outlet property="showPopupButton" destination="pIs-X3-ul6" id="aTA-54-KHJ"/>
|
||||
<outlet property="showToastButton" destination="YNI-50-nQ1" id="T79-Hh-GkH"/>
|
||||
<outlet property="throwException" destination="TDl-wl-Ehg" id="zof-sF-q3f"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackOpaque"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4471.1" systemVersion="12E55" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="vXZ-lx-hvc">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3697.3"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="ufC-wZ-h7g">
|
||||
<objects>
|
||||
<viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Ri1-i1-AX4"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="OWr-km-m7d"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WJZ-xJ-otb">
|
||||
<rect key="frame" x="45" y="81" width="230" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" size="button"/>
|
||||
<state key="normal" title="Show Exceptions">
|
||||
<color key="titleColor" red="0.19607843137254902" green="0.30980392156862746" blue="0.52156862745098043" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showExceptionsAction:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="iaz-5D-KKH"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sST-Dp-9j8">
|
||||
<rect key="frame" x="45" y="133" width="230" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Throw Exception">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="throwExceptionAction:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="NEh-dO-cJO"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="afD-MQ-GvJ">
|
||||
<rect key="frame" x="45" y="232" width="230" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Show Toast">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showToastAction:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="B87-Ph-5q4"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KIv-Br-EFZ">
|
||||
<rect key="frame" x="45" y="284" width="230" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Show Popup">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showPopupAction:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="u3k-dL-6XF"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4VY-4B-mLS">
|
||||
<rect key="frame" x="45" y="370" width="230" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Show LockScreen">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="showLockScreenAction:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="JpT-d1-z5I"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="showExceptionsButton" destination="WJZ-xJ-otb" id="Up5-20-ap8"/>
|
||||
<outlet property="showLockScreenButton" destination="4VY-4B-mLS" id="f64-r6-uBq"/>
|
||||
<outlet property="showPopupButton" destination="KIv-Br-EFZ" id="34Q-K3-coY"/>
|
||||
<outlet property="showToastButton" destination="afD-MQ-GvJ" id="9QK-S1-fvd"/>
|
||||
<outlet property="throwException" destination="sST-Dp-9j8" id="dVf-1n-rdq"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination" type="retina4"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>nl.EonaCat.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main_iPhone</string>
|
||||
<key>UIMainStoryboardFile~ipad</key>
|
||||
<string>Main_iPad</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,16 @@
|
||||
//
|
||||
// Prefix header
|
||||
//
|
||||
// The contents of this file are implicitly included at the beginning of every source file.
|
||||
//
|
||||
|
||||
#import <Availability.h>
|
||||
|
||||
#ifndef __IPHONE_5_0
|
||||
#warning "This project uses features only available in iOS SDK 5.0 and later."
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
@ -0,0 +1,48 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "50x50",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "50x50",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "72x72",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "72x72",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,5 @@
|
||||
// Dutch language file
|
||||
|
||||
"Back" = "Terug";
|
||||
"Clear" = "Legen";
|
||||
"Exceptions" = "Foutmeldingen";
|
@ -0,0 +1,5 @@
|
||||
// English language file
|
||||
|
||||
"Back" = "Back";
|
||||
"Clear" = "Clear";
|
||||
"Exceptions" = "Exceptions";
|
@ -0,0 +1,20 @@
|
||||
//
|
||||
// ExceptionHandler.h
|
||||
// Created by EonaCat
|
||||
// Copyright 2013 EonaCat. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <MessageUI/MFMailComposeViewController.h>
|
||||
|
||||
#define exceptionDelegate [[UIApplication sharedApplication] delegate]
|
||||
|
||||
@interface ExceptionHandler : UIViewController <MFMailComposeViewControllerDelegate>
|
||||
{
|
||||
BOOL dismissed;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
void createExceptionHandler(NSString *emailAddress,NSString *BCCemailAddress);
|
@ -0,0 +1,359 @@
|
||||
//
|
||||
// ExceptionHandler.m
|
||||
// Created by EonaCat
|
||||
// Copyright 2013 EonaCat. All rights reserved.
|
||||
//
|
||||
|
||||
// The ExceptionHandler needs to be imported in the ApplicationDelegate by using the #import "ExceptionHandler.h"; statement in de .m file
|
||||
// The following functions need to be created in the ApplicationDelegate.m file
|
||||
|
||||
// - (void)setExceptionHandler
|
||||
// {
|
||||
// createExceptionHandler(@"YOUREMAILADDRESS", @"");
|
||||
// }
|
||||
|
||||
// In the ApplicationDelegate file the method
|
||||
// - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
// need to be created inside this method you will need to implement the following code:
|
||||
//
|
||||
|
||||
// //Create the exceptionHandler
|
||||
// [self performSelector:@selector(setExceptionHandler) withObject:nil afterDelay:0];
|
||||
//
|
||||
//
|
||||
// You will need to implement the application delegate of the application before you can use the Email function.
|
||||
// So be sure to import the applications's delegate headerfile and change the following line:
|
||||
// (Located in the - (void) displayComposerSheet:(NSString *)body method)
|
||||
//
|
||||
// [self presentViewController: tempMailCompose animated:YES completion:nil];
|
||||
//
|
||||
// into
|
||||
//
|
||||
// [root.navigationController presentViewController: tempMailCompose animated:YES completion:nil];
|
||||
//
|
||||
// Be sure that the following line is present in your core or appdelegate file
|
||||
// #define Delegate ((yourAppDelegateFileName*)[UIApplication sharedApplication].delegate)
|
||||
|
||||
|
||||
|
||||
#import "ExceptionHandler.h"
|
||||
#import "DeviceIdentifier.h"
|
||||
#include <libkern/OSAtomic.h>
|
||||
#include <execinfo.h>
|
||||
#import "ExceptionLogger.h"
|
||||
|
||||
const NSString *ExceptionName = @"ExceptionName";
|
||||
const NSString *ExceptionKey = @"ExceptionKey";
|
||||
const NSString *ExceptionAddresses = @"ExceptionAddresses";
|
||||
|
||||
NSString *ExceptionTitle = @"iPhone Exception";
|
||||
NSString *ExceptionEmail = @"";
|
||||
NSString *ExceptionBCCEmail = @"";
|
||||
NSString *ExceptionMessage = @"";
|
||||
NSInteger ExceptionShown = 0;
|
||||
BOOL ExceptionAlert = true;
|
||||
|
||||
volatile int32_t ExceptionCount = 0;
|
||||
const int32_t ExceptionMaximum = 5;
|
||||
|
||||
const NSInteger ExceptionHandlerSkipAddressCount = 4;
|
||||
const NSInteger ExceptionHandlerReportAddressCount = 5;
|
||||
|
||||
@implementation ExceptionHandler
|
||||
|
||||
+ (NSArray *)backtrace
|
||||
{
|
||||
void *callstack[128];
|
||||
int frames = backtrace(callstack, 128);
|
||||
char **stringSymbols = backtrace_symbols(callstack, frames);
|
||||
|
||||
int i;
|
||||
NSMutableArray *backtrace = [NSMutableArray arrayWithCapacity:frames];
|
||||
|
||||
for (i = ExceptionHandlerSkipAddressCount; i < ExceptionHandlerSkipAddressCount + ExceptionHandlerReportAddressCount; i++)
|
||||
{
|
||||
[backtrace addObject:[NSString stringWithUTF8String:stringSymbols[i]]];
|
||||
}
|
||||
free(stringSymbols);
|
||||
|
||||
return backtrace;
|
||||
}
|
||||
|
||||
- (void)alertView:(UIAlertView *)anAlertView clickedButtonAtIndex:(NSInteger)Index
|
||||
{
|
||||
if (Index == 0) // Quit button clicked
|
||||
{
|
||||
ExceptionShown = 0;
|
||||
dismissed = YES;
|
||||
}
|
||||
else if (Index == 1) // Continue button clicked
|
||||
{
|
||||
ExceptionShown = 0;
|
||||
}
|
||||
else if (Index == 2) // Email button clicked
|
||||
{
|
||||
// Create the email that needs to be send
|
||||
[self performSelector:@selector(showComposer:) withObject:ExceptionMessage afterDelay:0.1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Displays an email composition interface inside the application. Populates all the Mail fields.
|
||||
- (void) displayComposerSheet:(NSString *)body
|
||||
{
|
||||
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
|
||||
mailController.mailComposeDelegate = self;
|
||||
|
||||
NSArray *toRecipient = [[NSArray alloc] initWithObjects:ExceptionEmail,nil];
|
||||
[mailController setToRecipients:toRecipient];
|
||||
|
||||
if (ExceptionBCCEmail.length > 0)
|
||||
{
|
||||
NSArray *bccRecipient = [[NSArray alloc] initWithObjects:ExceptionBCCEmail,nil];
|
||||
[mailController setBccRecipients:bccRecipient];
|
||||
}
|
||||
[mailController setSubject:ExceptionTitle];
|
||||
[mailController setMessageBody:body isHTML:NO];
|
||||
|
||||
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
|
||||
[window addSubview:mailController.view];
|
||||
}
|
||||
|
||||
// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation.
|
||||
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
|
||||
{
|
||||
// Notifies users about errors associated with the interface
|
||||
switch (result)
|
||||
{
|
||||
case MFMailComposeResultCancelled:
|
||||
NSLog(@"Result: canceled");
|
||||
break;
|
||||
case MFMailComposeResultSaved:
|
||||
NSLog(@"Result: saved");
|
||||
break;
|
||||
case MFMailComposeResultSent:
|
||||
NSLog(@"Result: sent");
|
||||
break;
|
||||
case MFMailComposeResultFailed:
|
||||
NSLog(@"Result: failed");
|
||||
break;
|
||||
default:
|
||||
NSLog(@"Result: not sent");
|
||||
break;
|
||||
}
|
||||
[self dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
||||
// Launches the Mail application on the device. Workaround
|
||||
-(void)launchMailAppOnDevice:(NSString *)body
|
||||
{
|
||||
NSString *recipients;
|
||||
|
||||
if ([ExceptionEmail isEqualToString:@"YOUREMAILADDRESS"])
|
||||
{
|
||||
NSLog(@"Could not send email (default values where detected!)");
|
||||
return;
|
||||
}
|
||||
|
||||
if (ExceptionBCCEmail.length > 0)
|
||||
{
|
||||
recipients = [NSString stringWithFormat:@"mailto:%@?bcc=%@?subject=%@", ExceptionEmail, ExceptionBCCEmail, ExceptionTitle];
|
||||
}
|
||||
else
|
||||
{
|
||||
recipients = [NSString stringWithFormat:@"mailto:%@?subject=%@", ExceptionEmail, ExceptionTitle];
|
||||
}
|
||||
|
||||
NSString *mailBody = [NSString stringWithFormat:@"&body=%@", body];
|
||||
|
||||
NSString *email = [NSString stringWithFormat:@"%@%@", recipients, mailBody];
|
||||
email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
|
||||
}
|
||||
|
||||
// Call this method and pass parameters
|
||||
-(void) showComposer:(id)sender
|
||||
{
|
||||
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
|
||||
|
||||
if (mailClass != nil)
|
||||
{
|
||||
// We must always check whether the current device is configured for sending emails
|
||||
if ([mailClass canSendMail])
|
||||
{
|
||||
[self displayComposerSheet:sender];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self launchMailAppOnDevice:sender];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
[self launchMailAppOnDevice:sender];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)saveAndQuit
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
- (void)checkForExceptions:(NSException *)exception
|
||||
{
|
||||
if (ExceptionShown == 0)
|
||||
{
|
||||
ExceptionShown = 1;
|
||||
[self saveAndQuit];
|
||||
|
||||
/*
|
||||
// Set the IMEI Number
|
||||
// Check if you got iOS5
|
||||
NSString *IMEI;
|
||||
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
|
||||
if (version >= 5.0)
|
||||
{
|
||||
IMEI = [[NSString alloc] initWithString:[[UIDevice currentDevice] deviceIdentifier]];
|
||||
}
|
||||
else
|
||||
{
|
||||
IMEI = [[NSString alloc] initWithString:[[UIDevice currentDevice] uniqueIdentifier]];
|
||||
}
|
||||
*/
|
||||
|
||||
NSDate *currentTime = [NSDate date];
|
||||
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
||||
[dateFormatter setDateFormat:@"YYYY-MM-dd hh-mm"];
|
||||
NSString *resultString = [dateFormatter stringFromDate: currentTime];
|
||||
|
||||
ExceptionMessage = [NSString stringWithFormat:
|
||||
@"iPhone exception information:\n\n"
|
||||
@"Date: %@\n"
|
||||
@"Application Name: %@\n"
|
||||
@"Localized Application Name: %@\n"
|
||||
@"Devicetype: %@\n"
|
||||
@"============================= \n"
|
||||
@"Reason: %@\n"
|
||||
@"============================= \n\n"
|
||||
@"***************************** \n\n"
|
||||
@"Exception: %@\n\n"
|
||||
@"***************************** \n",
|
||||
resultString, [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"],
|
||||
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"], [UIDevice currentDevice].model,
|
||||
[exception reason],[[exception userInfo] objectForKey:ExceptionAddresses]];
|
||||
|
||||
if (ExceptionAlert)
|
||||
{
|
||||
UIAlertView *alert =
|
||||
[[UIAlertView alloc]
|
||||
initWithTitle:@"You have found an error"
|
||||
message:[NSString stringWithFormat: @"You can try continuing using the application "
|
||||
@"but it may become unstable after a while.\n"
|
||||
@"Please send us an email with the error report "
|
||||
@"by clicking on the send report button."]
|
||||
delegate:self
|
||||
cancelButtonTitle:@"Quit"
|
||||
otherButtonTitles:@"Continue", @"Send report",nil];
|
||||
[alert show];
|
||||
}
|
||||
else
|
||||
{
|
||||
[[ExceptionLogger instance] log:ExceptionMessage];
|
||||
}
|
||||
|
||||
CFRunLoopRef runLoop = CFRunLoopGetCurrent();
|
||||
CFArrayRef allModes = CFRunLoopCopyAllModes(runLoop);
|
||||
|
||||
while (!dismissed)
|
||||
{
|
||||
for (NSString *mode in (__bridge NSArray *)allModes)
|
||||
{
|
||||
CFRunLoopRunInMode((__bridge CFStringRef)mode, 0.001, false);
|
||||
}
|
||||
}
|
||||
|
||||
CFRelease(allModes);
|
||||
|
||||
NSSetUncaughtExceptionHandler(NULL);
|
||||
signal(SIGABRT, SIG_DFL);
|
||||
signal(SIGILL, SIG_DFL);
|
||||
signal(SIGSEGV, SIG_DFL);
|
||||
signal(SIGFPE, SIG_DFL);
|
||||
signal(SIGBUS, SIG_DFL);
|
||||
signal(SIGPIPE, SIG_DFL);
|
||||
|
||||
if ([[exception name] isEqual:ExceptionName])
|
||||
{
|
||||
kill(getpid(), [[[exception userInfo] objectForKey:ExceptionKey] intValue]);
|
||||
}
|
||||
else
|
||||
{
|
||||
[exception raise];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
void checkForExceptions(NSException *exception)
|
||||
{
|
||||
int32_t exceptionCount = OSAtomicIncrement32(&ExceptionCount);
|
||||
if (exceptionCount > ExceptionMaximum)
|
||||
{
|
||||
NSLog(@"Maximum amount of exceptions where raised !");
|
||||
return;
|
||||
}
|
||||
|
||||
NSArray *callStack = [ExceptionHandler backtrace];
|
||||
NSMutableDictionary *userInfo =
|
||||
[NSMutableDictionary dictionaryWithDictionary:[exception userInfo]];
|
||||
[userInfo
|
||||
setObject:callStack
|
||||
forKey:ExceptionAddresses];
|
||||
|
||||
[[[ExceptionHandler alloc] init]
|
||||
performSelectorOnMainThread:@selector(checkForExceptions:)
|
||||
withObject:
|
||||
[NSException
|
||||
exceptionWithName:[exception name]
|
||||
reason:[exception reason]
|
||||
userInfo:userInfo]
|
||||
waitUntilDone:YES];
|
||||
}
|
||||
|
||||
void ExceptionCounter(int exception)
|
||||
{
|
||||
int32_t exceptionCount = OSAtomicIncrement32(&ExceptionCount);
|
||||
|
||||
if (exceptionCount > ExceptionMaximum)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObject:[NSNumber numberWithInt:exception] forKey:ExceptionKey];
|
||||
|
||||
NSArray *callStack = [ExceptionHandler backtrace];
|
||||
[userInfo setObject:callStack forKey:ExceptionAddresses];
|
||||
|
||||
[[[ExceptionHandler alloc] init] performSelectorOnMainThread:@selector(checkForExceptions:)
|
||||
withObject: [NSException exceptionWithName:[NSString stringWithFormat:@"%@",ExceptionTitle]
|
||||
reason: [NSString stringWithFormat: NSLocalizedString(@"Signal %d was raised.", nil), signal]
|
||||
userInfo: [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:exception] forKey:ExceptionKey]]
|
||||
waitUntilDone:YES];
|
||||
}
|
||||
|
||||
void createExceptionHandler(NSString *emailAddress,NSString *BCCemailAddress)
|
||||
{
|
||||
NSSetUncaughtExceptionHandler(&checkForExceptions);
|
||||
signal(SIGABRT, ExceptionCounter);
|
||||
signal(SIGILL, ExceptionCounter);
|
||||
signal(SIGSEGV, ExceptionCounter);
|
||||
signal(SIGFPE, ExceptionCounter);
|
||||
signal(SIGBUS, ExceptionCounter);
|
||||
signal(SIGPIPE, ExceptionCounter);
|
||||
|
||||
ExceptionEmail = emailAddress;
|
||||
ExceptionBCCEmail = BCCemailAddress;
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4471.1" systemVersion="12E55" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment version="768" defaultVersion="1792" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3697.3"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ExceptionLogger">
|
||||
<connections>
|
||||
<outlet property="navigationBar" destination="24" id="26"/>
|
||||
<outlet property="view" destination="1" id="25"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<navigationBar contentMode="scaleToFill" id="23">
|
||||
<rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="tintColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<items>
|
||||
<navigationItem title="Exceptions" id="24"/>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ExceptionLogger.png" id="27">
|
||||
<rect key="frame" x="277" y="814" width="215" height="170"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" id="Qly-Ng-xEE">
|
||||
<rect key="frame" x="14" y="58" width="742" height="748"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ExceptionLogger.png" width="128" height="128"/>
|
||||
</resources>
|
||||
</document>
|
@ -0,0 +1,24 @@
|
||||
//
|
||||
// ExceptionLogger.h
|
||||
// Created by EonaCat
|
||||
// Copyright 2013 EonaCat. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface ExceptionLogger : UIViewController <UITextViewDelegate>
|
||||
{
|
||||
IBOutlet UINavigationItem *navigationBar;
|
||||
NSString *path;
|
||||
IBOutlet UITextView *textView;
|
||||
}
|
||||
|
||||
@property (nonatomic, strong) IBOutlet UINavigationItem *navigationBar;
|
||||
@property (nonatomic, strong) IBOutlet UITextView *textView;
|
||||
|
||||
+(ExceptionLogger*)instance;
|
||||
-(IBAction)updateLog:(id)sender;
|
||||
-(IBAction)Clear:(id)sender;
|
||||
-(void)log:(NSString*)exception;
|
||||
|
||||
@end
|
@ -0,0 +1,226 @@
|
||||
//
|
||||
// ExceptionLogger.m
|
||||
// Created by EonaCat
|
||||
// Copyright 2013 EonaCat. All rights reserved.
|
||||
//
|
||||
|
||||
// The ExceptionLogger needs to be imported in a view by using the #import "ExceptionLogger.h"; statement in de .m file
|
||||
// The following functions need to be created in the view.m file
|
||||
|
||||
// - (void)swipedScreen:(UISwipeGestureRecognizer*)swipeGesture
|
||||
// {
|
||||
// // Show ExceptionLogger (Check for iPhone or iPad)
|
||||
// ExceptionLogger* exceptionLogger = nil;
|
||||
// if (iPad)
|
||||
// {
|
||||
// exceptionLogger = [[ExceptionLogger alloc] initWithNibName:@"ExceptionLogger-iPad" bundle:nil];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// exceptionLogger = [[ExceptionLogger alloc] initWithNibName:@"ExceptionLogger" bundle:nil];
|
||||
// }
|
||||
// [self.navigationController pushViewController:exceptionLogger animated:YES completion:nil];
|
||||
// [exceptionLogger release];
|
||||
// } |