Facebook updates + Mac fixes.
[UPDATED] Facebook integration bumped for iOS 6. [FIXED] Bringing Mac version back up to date. Compiles again and runs with UI bugs. [ADDED] Mac: User selection.
This commit is contained in:
parent
678545cc26
commit
05ab38b998
2
External/facebook-ios-sdk
vendored
2
External/facebook-ios-sdk
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 682535050207c771706823cbf0fc31a206b12956
|
Subproject commit 2a030e795aed343e7614e149a5ebdfa78b223a72
|
File diff suppressed because it is too large
Load Diff
@ -94,8 +94,6 @@
|
|||||||
DA4ECA2B160D94A80012ABB9 /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4ECA26160D94A80012ABB9 /* libTestFlight.a */; };
|
DA4ECA2B160D94A80012ABB9 /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4ECA26160D94A80012ABB9 /* libTestFlight.a */; };
|
||||||
DA4ECA2E160D94A80012ABB9 /* TestFlight.plist in Resources */ = {isa = PBXBuildFile; fileRef = DA4ECA2A160D94A80012ABB9 /* TestFlight.plist */; };
|
DA4ECA2E160D94A80012ABB9 /* TestFlight.plist in Resources */ = {isa = PBXBuildFile; fileRef = DA4ECA2A160D94A80012ABB9 /* TestFlight.plist */; };
|
||||||
DA55873F15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png in Resources */ = {isa = PBXBuildFile; fileRef = DA55873E15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png */; };
|
DA55873F15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png in Resources */ = {isa = PBXBuildFile; fileRef = DA55873E15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png */; };
|
||||||
DA55878015E82C0300860B4F /* FacebookSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA55877F15E82C0300860B4F /* FacebookSDK.framework */; };
|
|
||||||
DA55878215E82C2B00860B4F /* FacebookSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DA55878115E82C2B00860B4F /* FacebookSDKResources.bundle */; };
|
|
||||||
DA5587EB15E83C3200860B4F /* social-facebook.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5587E515E83C3200860B4F /* social-facebook.png */; };
|
DA5587EB15E83C3200860B4F /* social-facebook.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5587E515E83C3200860B4F /* social-facebook.png */; };
|
||||||
DA5587EC15E83C3200860B4F /* social-facebook@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5587E615E83C3200860B4F /* social-facebook@2x.png */; };
|
DA5587EC15E83C3200860B4F /* social-facebook@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5587E615E83C3200860B4F /* social-facebook@2x.png */; };
|
||||||
DA5587ED15E83C3200860B4F /* social-google+.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5587E715E83C3200860B4F /* social-google+.png */; };
|
DA5587ED15E83C3200860B4F /* social-google+.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5587E715E83C3200860B4F /* social-google+.png */; };
|
||||||
@ -131,6 +129,11 @@
|
|||||||
DA609F5C1600CE980030AE31 /* LocalyticsUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = DA609F551600CE980030AE31 /* LocalyticsUploader.h */; };
|
DA609F5C1600CE980030AE31 /* LocalyticsUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = DA609F551600CE980030AE31 /* LocalyticsUploader.h */; };
|
||||||
DA609F5D1600CE980030AE31 /* LocalyticsUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = DA609F561600CE980030AE31 /* LocalyticsUploader.m */; };
|
DA609F5D1600CE980030AE31 /* LocalyticsUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = DA609F561600CE980030AE31 /* LocalyticsUploader.m */; };
|
||||||
DA609F5E1600CE980030AE31 /* WebserviceConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = DA609F571600CE980030AE31 /* WebserviceConstants.h */; };
|
DA609F5E1600CE980030AE31 /* WebserviceConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = DA609F571600CE980030AE31 /* WebserviceConstants.h */; };
|
||||||
|
DA6701B816406A4100B61001 /* Accounts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA6701B716406A4100B61001 /* Accounts.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||||
|
DA6701BA16406B0600B61001 /* FacebookSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA6701B916406B0600B61001 /* FacebookSDK.framework */; };
|
||||||
|
DA6701DC16406B3600B61001 /* FacebookSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DA6701DB16406B3600B61001 /* FacebookSDKResources.bundle */; };
|
||||||
|
DA6701DE16406B7300B61001 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA6701DD16406B7300B61001 /* Social.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||||
|
DA6701E016406BB400B61001 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA6701DF16406BB400B61001 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||||
DA672D2F14F92C6B004A189C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DA672D2E14F92C6B004A189C /* libz.dylib */; };
|
DA672D2F14F92C6B004A189C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DA672D2E14F92C6B004A189C /* libz.dylib */; };
|
||||||
DA672D3014F9413D004A189C /* libPearl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC77CAD148291A600BCF976 /* libPearl.a */; };
|
DA672D3014F9413D004A189C /* libPearl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC77CAD148291A600BCF976 /* libPearl.a */; };
|
||||||
DA829E52159847E0002417D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
DA829E52159847E0002417D3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
@ -1116,41 +1119,6 @@
|
|||||||
DA4ECA29160D94A80012ABB9 /* TestFlight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFlight.h; sourceTree = "<group>"; };
|
DA4ECA29160D94A80012ABB9 /* TestFlight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFlight.h; sourceTree = "<group>"; };
|
||||||
DA4ECA2A160D94A80012ABB9 /* TestFlight.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = TestFlight.plist; sourceTree = "<group>"; };
|
DA4ECA2A160D94A80012ABB9 /* TestFlight.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = TestFlight.plist; sourceTree = "<group>"; };
|
||||||
DA55873E15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iTunesArtwork-Rounded-73.png"; sourceTree = "<group>"; };
|
DA55873E15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iTunesArtwork-Rounded-73.png"; sourceTree = "<group>"; };
|
||||||
DA55877F15E82C0300860B4F /* FacebookSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FacebookSDK.framework; path = "External/facebook-ios-sdk/build/FacebookSDK.framework"; sourceTree = "<group>"; };
|
|
||||||
DA55878115E82C2B00860B4F /* FacebookSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = FacebookSDKResources.bundle; path = "External/facebook-ios-sdk/build/FacebookSDK.framework/Versions/A/Resources/FacebookSDKResources.bundle"; sourceTree = "<group>"; };
|
|
||||||
DA5587B815E838CD00860B4F /* Facebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Facebook.h; sourceTree = "<group>"; };
|
|
||||||
DA5587B915E838CD00860B4F /* FacebookSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FacebookSDK.h; sourceTree = "<group>"; };
|
|
||||||
DA5587BA15E838CD00860B4F /* FBCacheDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCacheDescriptor.h; sourceTree = "<group>"; };
|
|
||||||
DA5587BB15E838CD00860B4F /* FBConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBConnect.h; sourceTree = "<group>"; };
|
|
||||||
DA5587BC15E838CD00860B4F /* FBDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBDialog.h; sourceTree = "<group>"; };
|
|
||||||
DA5587BD15E838CD00860B4F /* FBError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBError.h; sourceTree = "<group>"; };
|
|
||||||
DA5587BE15E838CD00860B4F /* FBFrictionlessRequestSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFrictionlessRequestSettings.h; sourceTree = "<group>"; };
|
|
||||||
DA5587BF15E838CD00860B4F /* FBFriendPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFriendPickerViewController.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C015E838CD00860B4F /* FBGraphLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphLocation.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C115E838CD00860B4F /* FBGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphObject.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C215E838CD00860B4F /* FBGraphPlace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphPlace.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C315E838CD00860B4F /* FBGraphUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphUser.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C415E838CD00860B4F /* FBLoginDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBLoginDialog.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C515E838CD00860B4F /* FBLoginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBLoginView.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C615E838CD00860B4F /* FBOpenGraphAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBOpenGraphAction.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C715E838CD00860B4F /* FBPlacePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBPlacePickerViewController.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C815E838CD00860B4F /* FBProfilePictureView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBProfilePictureView.h; sourceTree = "<group>"; };
|
|
||||||
DA5587C915E838CD00860B4F /* FBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBRequest.h; sourceTree = "<group>"; };
|
|
||||||
DA5587CA15E838CD00860B4F /* FBRequestConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBRequestConnection.h; sourceTree = "<group>"; };
|
|
||||||
DA5587CB15E838CD00860B4F /* FBSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSession.h; sourceTree = "<group>"; };
|
|
||||||
DA5587CC15E838CD00860B4F /* FBSessionManualTokenCachingStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSessionManualTokenCachingStrategy.h; sourceTree = "<group>"; };
|
|
||||||
DA5587CD15E838CD00860B4F /* FBSessionTokenCachingStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSessionTokenCachingStrategy.h; sourceTree = "<group>"; };
|
|
||||||
DA5587CE15E838CD00860B4F /* FBSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSettings.h; sourceTree = "<group>"; };
|
|
||||||
DA5587CF15E838CD00860B4F /* FBTestSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBTestSession.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D015E838CD00860B4F /* FBUserSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBUserSettingsViewController.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D115E838CD00860B4F /* FBViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBViewController.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D215E838CD00860B4F /* JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSON.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D315E838CD00860B4F /* NSObject+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+SBJSON.h"; sourceTree = "<group>"; };
|
|
||||||
DA5587D415E838CD00860B4F /* NSString+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+SBJSON.h"; sourceTree = "<group>"; };
|
|
||||||
DA5587D515E838CD00860B4F /* SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJSON.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D615E838CD00860B4F /* SBJsonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonBase.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D715E838CD00860B4F /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonParser.h; sourceTree = "<group>"; };
|
|
||||||
DA5587D815E838CD00860B4F /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonWriter.h; sourceTree = "<group>"; };
|
|
||||||
DA5587E515E83C3200860B4F /* social-facebook.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "social-facebook.png"; sourceTree = "<group>"; };
|
DA5587E515E83C3200860B4F /* social-facebook.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "social-facebook.png"; sourceTree = "<group>"; };
|
||||||
DA5587E615E83C3200860B4F /* social-facebook@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "social-facebook@2x.png"; sourceTree = "<group>"; };
|
DA5587E615E83C3200860B4F /* social-facebook@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "social-facebook@2x.png"; sourceTree = "<group>"; };
|
||||||
DA5587E715E83C3200860B4F /* social-google+.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "social-google+.png"; sourceTree = "<group>"; };
|
DA5587E715E83C3200860B4F /* social-google+.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "social-google+.png"; sourceTree = "<group>"; };
|
||||||
@ -1194,6 +1162,42 @@
|
|||||||
DA609F551600CE980030AE31 /* LocalyticsUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalyticsUploader.h; sourceTree = "<group>"; };
|
DA609F551600CE980030AE31 /* LocalyticsUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalyticsUploader.h; sourceTree = "<group>"; };
|
||||||
DA609F561600CE980030AE31 /* LocalyticsUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocalyticsUploader.m; sourceTree = "<group>"; };
|
DA609F561600CE980030AE31 /* LocalyticsUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocalyticsUploader.m; sourceTree = "<group>"; };
|
||||||
DA609F571600CE980030AE31 /* WebserviceConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebserviceConstants.h; sourceTree = "<group>"; };
|
DA609F571600CE980030AE31 /* WebserviceConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebserviceConstants.h; sourceTree = "<group>"; };
|
||||||
|
DA6701B716406A4100B61001 /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; };
|
||||||
|
DA6701B916406B0600B61001 /* FacebookSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FacebookSDK.framework; path = "External/facebook-ios-sdk/build/FacebookSDK.framework"; sourceTree = "<group>"; };
|
||||||
|
DA6701BC16406B1C00B61001 /* Facebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Facebook.h; sourceTree = "<group>"; };
|
||||||
|
DA6701BD16406B1C00B61001 /* FacebookSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FacebookSDK.h; sourceTree = "<group>"; };
|
||||||
|
DA6701BE16406B1C00B61001 /* FBCacheDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCacheDescriptor.h; sourceTree = "<group>"; };
|
||||||
|
DA6701BF16406B1C00B61001 /* FBConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBConnect.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C016406B1C00B61001 /* FBDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBDialog.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C116406B1C00B61001 /* FBError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBError.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C216406B1C00B61001 /* FBFrictionlessRequestSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFrictionlessRequestSettings.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C316406B1C00B61001 /* FBFriendPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFriendPickerViewController.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C416406B1C00B61001 /* FBGraphLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphLocation.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C516406B1C00B61001 /* FBGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphObject.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C616406B1C00B61001 /* FBGraphPlace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphPlace.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C716406B1C00B61001 /* FBGraphUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBGraphUser.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C816406B1C00B61001 /* FBLoginDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBLoginDialog.h; sourceTree = "<group>"; };
|
||||||
|
DA6701C916406B1C00B61001 /* FBLoginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBLoginView.h; sourceTree = "<group>"; };
|
||||||
|
DA6701CA16406B1C00B61001 /* FBNativeDialogs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBNativeDialogs.h; sourceTree = "<group>"; };
|
||||||
|
DA6701CB16406B1C00B61001 /* FBOpenGraphAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBOpenGraphAction.h; sourceTree = "<group>"; };
|
||||||
|
DA6701CC16406B1C00B61001 /* FBPlacePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBPlacePickerViewController.h; sourceTree = "<group>"; };
|
||||||
|
DA6701CD16406B1C00B61001 /* FBProfilePictureView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBProfilePictureView.h; sourceTree = "<group>"; };
|
||||||
|
DA6701CE16406B1C00B61001 /* FBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBRequest.h; sourceTree = "<group>"; };
|
||||||
|
DA6701CF16406B1C00B61001 /* FBRequestConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBRequestConnection.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D016406B1C00B61001 /* FBSBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSBJSON.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D116406B1C00B61001 /* FBSBJsonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSBJsonBase.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D216406B1C00B61001 /* FBSBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSBJsonParser.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D316406B1C00B61001 /* FBSBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSBJsonWriter.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D416406B1C00B61001 /* FBSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSession.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D516406B1C00B61001 /* FBSessionManualTokenCachingStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSessionManualTokenCachingStrategy.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D616406B1C00B61001 /* FBSessionTokenCachingStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSessionTokenCachingStrategy.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D716406B1C00B61001 /* FBSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBSettings.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D816406B1C00B61001 /* FBTestSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBTestSession.h; sourceTree = "<group>"; };
|
||||||
|
DA6701D916406B1C00B61001 /* FBUserSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBUserSettingsViewController.h; sourceTree = "<group>"; };
|
||||||
|
DA6701DA16406B1C00B61001 /* FBViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBViewController.h; sourceTree = "<group>"; };
|
||||||
|
DA6701DB16406B3600B61001 /* FacebookSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = FacebookSDKResources.bundle; path = "External/facebook-ios-sdk/build/FacebookSDK.framework/Versions/A/Resources/FacebookSDKResources.bundle"; sourceTree = "<group>"; };
|
||||||
|
DA6701DD16406B7300B61001 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
|
||||||
|
DA6701DF16406BB400B61001 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; };
|
||||||
DA672D2E14F92C6B004A189C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
DA672D2E14F92C6B004A189C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||||
DA79A9BB1557DB6F00BAA07A /* libscryptenc-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libscryptenc-ios.a"; sourceTree = "<group>"; };
|
DA79A9BB1557DB6F00BAA07A /* libscryptenc-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libscryptenc-ios.a"; sourceTree = "<group>"; };
|
||||||
DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = scrypt.xcodeproj; path = External/Pearl/External/iOSPorts/ports/security/scrypt/scrypt.xcodeproj; sourceTree = "<group>"; };
|
DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = scrypt.xcodeproj; path = External/Pearl/External/iOSPorts/ports/security/scrypt/scrypt.xcodeproj; sourceTree = "<group>"; };
|
||||||
@ -2092,6 +2096,9 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
DA6701E016406BB400B61001 /* AdSupport.framework in Frameworks */,
|
||||||
|
DA6701DE16406B7300B61001 /* Social.framework in Frameworks */,
|
||||||
|
DA6701B816406A4100B61001 /* Accounts.framework in Frameworks */,
|
||||||
DA497C0C15E8C95700B52167 /* libGoogle+.a in Frameworks */,
|
DA497C0C15E8C95700B52167 /* libGoogle+.a in Frameworks */,
|
||||||
DA829E6215984832002417D3 /* libFontReplacer.a in Frameworks */,
|
DA829E6215984832002417D3 /* libFontReplacer.a in Frameworks */,
|
||||||
DA44260A1557D9E40052177D /* libiCloudStoreManager.a in Frameworks */,
|
DA44260A1557D9E40052177D /* libiCloudStoreManager.a in Frameworks */,
|
||||||
@ -2111,8 +2118,8 @@
|
|||||||
DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */,
|
DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */,
|
||||||
DAD3126715528C9C00A3F9ED /* Crashlytics.framework in Frameworks */,
|
DAD3126715528C9C00A3F9ED /* Crashlytics.framework in Frameworks */,
|
||||||
93D399433EA75E50656040CB /* Twitter.framework in Frameworks */,
|
93D399433EA75E50656040CB /* Twitter.framework in Frameworks */,
|
||||||
DA55878015E82C0300860B4F /* FacebookSDK.framework in Frameworks */,
|
|
||||||
DA4ECA2B160D94A80012ABB9 /* libTestFlight.a in Frameworks */,
|
DA4ECA2B160D94A80012ABB9 /* libTestFlight.a in Frameworks */,
|
||||||
|
DA6701BA16406B0600B61001 /* FacebookSDK.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -2173,9 +2180,9 @@
|
|||||||
DA3EE95B1601C06000C68F6D /* Facebook */ = {
|
DA3EE95B1601C06000C68F6D /* Facebook */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
DA5587B715E838CD00860B4F /* DeprecatedHeaders */,
|
DA6701DB16406B3600B61001 /* FacebookSDKResources.bundle */,
|
||||||
DA55878115E82C2B00860B4F /* FacebookSDKResources.bundle */,
|
DA6701BB16406B1C00B61001 /* DeprecatedHeaders */,
|
||||||
DA55877F15E82C0300860B4F /* FacebookSDK.framework */,
|
DA6701B916406B0600B61001 /* FacebookSDK.framework */,
|
||||||
);
|
);
|
||||||
name = Facebook;
|
name = Facebook;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -2302,47 +2309,6 @@
|
|||||||
path = GTLPlus;
|
path = GTLPlus;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
DA5587B715E838CD00860B4F /* DeprecatedHeaders */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
DA5587B815E838CD00860B4F /* Facebook.h */,
|
|
||||||
DA5587B915E838CD00860B4F /* FacebookSDK.h */,
|
|
||||||
DA5587BA15E838CD00860B4F /* FBCacheDescriptor.h */,
|
|
||||||
DA5587BB15E838CD00860B4F /* FBConnect.h */,
|
|
||||||
DA5587BC15E838CD00860B4F /* FBDialog.h */,
|
|
||||||
DA5587BD15E838CD00860B4F /* FBError.h */,
|
|
||||||
DA5587BE15E838CD00860B4F /* FBFrictionlessRequestSettings.h */,
|
|
||||||
DA5587BF15E838CD00860B4F /* FBFriendPickerViewController.h */,
|
|
||||||
DA5587C015E838CD00860B4F /* FBGraphLocation.h */,
|
|
||||||
DA5587C115E838CD00860B4F /* FBGraphObject.h */,
|
|
||||||
DA5587C215E838CD00860B4F /* FBGraphPlace.h */,
|
|
||||||
DA5587C315E838CD00860B4F /* FBGraphUser.h */,
|
|
||||||
DA5587C415E838CD00860B4F /* FBLoginDialog.h */,
|
|
||||||
DA5587C515E838CD00860B4F /* FBLoginView.h */,
|
|
||||||
DA5587C615E838CD00860B4F /* FBOpenGraphAction.h */,
|
|
||||||
DA5587C715E838CD00860B4F /* FBPlacePickerViewController.h */,
|
|
||||||
DA5587C815E838CD00860B4F /* FBProfilePictureView.h */,
|
|
||||||
DA5587C915E838CD00860B4F /* FBRequest.h */,
|
|
||||||
DA5587CA15E838CD00860B4F /* FBRequestConnection.h */,
|
|
||||||
DA5587CB15E838CD00860B4F /* FBSession.h */,
|
|
||||||
DA5587CC15E838CD00860B4F /* FBSessionManualTokenCachingStrategy.h */,
|
|
||||||
DA5587CD15E838CD00860B4F /* FBSessionTokenCachingStrategy.h */,
|
|
||||||
DA5587CE15E838CD00860B4F /* FBSettings.h */,
|
|
||||||
DA5587CF15E838CD00860B4F /* FBTestSession.h */,
|
|
||||||
DA5587D015E838CD00860B4F /* FBUserSettingsViewController.h */,
|
|
||||||
DA5587D115E838CD00860B4F /* FBViewController.h */,
|
|
||||||
DA5587D215E838CD00860B4F /* JSON.h */,
|
|
||||||
DA5587D315E838CD00860B4F /* NSObject+SBJSON.h */,
|
|
||||||
DA5587D415E838CD00860B4F /* NSString+SBJSON.h */,
|
|
||||||
DA5587D515E838CD00860B4F /* SBJSON.h */,
|
|
||||||
DA5587D615E838CD00860B4F /* SBJsonBase.h */,
|
|
||||||
DA5587D715E838CD00860B4F /* SBJsonParser.h */,
|
|
||||||
DA5587D815E838CD00860B4F /* SBJsonWriter.h */,
|
|
||||||
);
|
|
||||||
name = DeprecatedHeaders;
|
|
||||||
path = "External/facebook-ios-sdk/build/FacebookSDK.framework/Versions/A/DeprecatedHeaders";
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
DA5587F715E8B7B200860B4F /* Google+ */ = {
|
DA5587F715E8B7B200860B4F /* Google+ */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -2418,6 +2384,9 @@
|
|||||||
DA5BFA47147E415C00F98B1E /* Frameworks */ = {
|
DA5BFA47147E415C00F98B1E /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
DA6701DF16406BB400B61001 /* AdSupport.framework */,
|
||||||
|
DA6701DD16406B7300B61001 /* Social.framework */,
|
||||||
|
DA6701B716406A4100B61001 /* Accounts.framework */,
|
||||||
93D394077F8FAB8167647187 /* Twitter.framework */,
|
93D394077F8FAB8167647187 /* Twitter.framework */,
|
||||||
DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */,
|
DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */,
|
||||||
DAD312C01552A20800A3F9ED /* libsqlite3.dylib */,
|
DAD312C01552A20800A3F9ED /* libsqlite3.dylib */,
|
||||||
@ -2472,6 +2441,45 @@
|
|||||||
path = MasterPassword;
|
path = MasterPassword;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
DA6701BB16406B1C00B61001 /* DeprecatedHeaders */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
DA6701BC16406B1C00B61001 /* Facebook.h */,
|
||||||
|
DA6701BD16406B1C00B61001 /* FacebookSDK.h */,
|
||||||
|
DA6701BE16406B1C00B61001 /* FBCacheDescriptor.h */,
|
||||||
|
DA6701BF16406B1C00B61001 /* FBConnect.h */,
|
||||||
|
DA6701C016406B1C00B61001 /* FBDialog.h */,
|
||||||
|
DA6701C116406B1C00B61001 /* FBError.h */,
|
||||||
|
DA6701C216406B1C00B61001 /* FBFrictionlessRequestSettings.h */,
|
||||||
|
DA6701C316406B1C00B61001 /* FBFriendPickerViewController.h */,
|
||||||
|
DA6701C416406B1C00B61001 /* FBGraphLocation.h */,
|
||||||
|
DA6701C516406B1C00B61001 /* FBGraphObject.h */,
|
||||||
|
DA6701C616406B1C00B61001 /* FBGraphPlace.h */,
|
||||||
|
DA6701C716406B1C00B61001 /* FBGraphUser.h */,
|
||||||
|
DA6701C816406B1C00B61001 /* FBLoginDialog.h */,
|
||||||
|
DA6701C916406B1C00B61001 /* FBLoginView.h */,
|
||||||
|
DA6701CA16406B1C00B61001 /* FBNativeDialogs.h */,
|
||||||
|
DA6701CB16406B1C00B61001 /* FBOpenGraphAction.h */,
|
||||||
|
DA6701CC16406B1C00B61001 /* FBPlacePickerViewController.h */,
|
||||||
|
DA6701CD16406B1C00B61001 /* FBProfilePictureView.h */,
|
||||||
|
DA6701CE16406B1C00B61001 /* FBRequest.h */,
|
||||||
|
DA6701CF16406B1C00B61001 /* FBRequestConnection.h */,
|
||||||
|
DA6701D016406B1C00B61001 /* FBSBJSON.h */,
|
||||||
|
DA6701D116406B1C00B61001 /* FBSBJsonBase.h */,
|
||||||
|
DA6701D216406B1C00B61001 /* FBSBJsonParser.h */,
|
||||||
|
DA6701D316406B1C00B61001 /* FBSBJsonWriter.h */,
|
||||||
|
DA6701D416406B1C00B61001 /* FBSession.h */,
|
||||||
|
DA6701D516406B1C00B61001 /* FBSessionManualTokenCachingStrategy.h */,
|
||||||
|
DA6701D616406B1C00B61001 /* FBSessionTokenCachingStrategy.h */,
|
||||||
|
DA6701D716406B1C00B61001 /* FBSettings.h */,
|
||||||
|
DA6701D816406B1C00B61001 /* FBTestSession.h */,
|
||||||
|
DA6701D916406B1C00B61001 /* FBUserSettingsViewController.h */,
|
||||||
|
DA6701DA16406B1C00B61001 /* FBViewController.h */,
|
||||||
|
);
|
||||||
|
name = DeprecatedHeaders;
|
||||||
|
path = "External/facebook-ios-sdk/build/FacebookSDK.framework/Versions/A/DeprecatedHeaders";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
DA79A9BE1557DDC700BAA07A /* Products */ = {
|
DA79A9BE1557DDC700BAA07A /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -4661,7 +4669,6 @@
|
|||||||
DA46827015AB843200FB09E7 /* tip_basic_black_bottom_right@2x.png in Resources */,
|
DA46827015AB843200FB09E7 /* tip_basic_black_bottom_right@2x.png in Resources */,
|
||||||
DAC4149215C53C48007A716E /* dictionary.lst in Resources */,
|
DAC4149215C53C48007A716E /* dictionary.lst in Resources */,
|
||||||
DA55873F15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png in Resources */,
|
DA55873F15E81D9E00860B4F /* iTunesArtwork-Rounded-73.png in Resources */,
|
||||||
DA55878215E82C2B00860B4F /* FacebookSDKResources.bundle in Resources */,
|
|
||||||
DA5587EB15E83C3200860B4F /* social-facebook.png in Resources */,
|
DA5587EB15E83C3200860B4F /* social-facebook.png in Resources */,
|
||||||
DA5587EC15E83C3200860B4F /* social-facebook@2x.png in Resources */,
|
DA5587EC15E83C3200860B4F /* social-facebook@2x.png in Resources */,
|
||||||
DA5587ED15E83C3200860B4F /* social-google+.png in Resources */,
|
DA5587ED15E83C3200860B4F /* social-google+.png in Resources */,
|
||||||
@ -4691,6 +4698,7 @@
|
|||||||
DA3EE946160145C700C68F6D /* Default-568h.png in Resources */,
|
DA3EE946160145C700C68F6D /* Default-568h.png in Resources */,
|
||||||
DA3EE947160145C700C68F6D /* Default-568h@2x.png in Resources */,
|
DA3EE947160145C700C68F6D /* Default-568h@2x.png in Resources */,
|
||||||
DA4ECA2E160D94A80012ABB9 /* TestFlight.plist in Resources */,
|
DA4ECA2E160D94A80012ABB9 /* TestFlight.plist in Resources */,
|
||||||
|
DA6701DC16406B3600B61001 /* FacebookSDKResources.bundle in Resources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -5155,10 +5163,12 @@
|
|||||||
ARCHS = armv7;
|
ARCHS = armv7;
|
||||||
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||||
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
|
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
@ -5216,10 +5226,12 @@
|
|||||||
ARCHS = armv7;
|
ARCHS = armv7;
|
||||||
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||||
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
|
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||||
@ -5370,10 +5382,12 @@
|
|||||||
ARCHS = armv7;
|
ARCHS = armv7;
|
||||||
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||||
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
|
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||||
|
@ -26,7 +26,7 @@ id<MPAlgorithm> MPAlgorithmForVersion(NSUInteger version) {
|
|||||||
|
|
||||||
id<MPAlgorithm> algorithm = [versionToAlgorithm objectForKey:@(version)];
|
id<MPAlgorithm> algorithm = [versionToAlgorithm objectForKey:@(version)];
|
||||||
if (!algorithm)
|
if (!algorithm)
|
||||||
if ((algorithm = [NSClassFromString(PearlString(@"MPAlgorithmV%u", version)) new]))
|
if ((algorithm = [NSClassFromString(PearlString(@"MPAlgorithmV%lu", (unsigned long)version)) new]))
|
||||||
[versionToAlgorithm setObject:algorithm forKey:@(version)];
|
[versionToAlgorithm setObject:algorithm forKey:@(version)];
|
||||||
|
|
||||||
return algorithm;
|
return algorithm;
|
||||||
|
@ -6,10 +6,8 @@
|
|||||||
// Copyright (c) 2011 Lyndir. All rights reserved.
|
// Copyright (c) 2011 Lyndir. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import <Crashlytics/Crashlytics.h>
|
|
||||||
#import "MPAppDelegate_Key.h"
|
#import "MPAppDelegate_Key.h"
|
||||||
#import "MPAppDelegate_Store.h"
|
#import "MPAppDelegate_Store.h"
|
||||||
#import "LocalyticsSession.h"
|
|
||||||
|
|
||||||
@implementation MPAppDelegate_Shared (Key)
|
@implementation MPAppDelegate_Shared (Key)
|
||||||
|
|
||||||
@ -101,7 +99,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
|
|
||||||
// Migrate existing elements.
|
// Migrate existing elements.
|
||||||
MPKey *recoverKey = nil;
|
MPKey *recoverKey = nil;
|
||||||
|
#ifdef PEARL_UIKIT
|
||||||
PearlAlert *activityAlert = [PearlAlert showActivityWithTitle:PearlString(@"Migrating %d sites...", [user.elements count])];
|
PearlAlert *activityAlert = [PearlAlert showActivityWithTitle:PearlString(@"Migrating %d sites...", [user.elements count])];
|
||||||
|
#endif
|
||||||
|
|
||||||
for (MPElementEntity *element in user.elements) {
|
for (MPElementEntity *element in user.elements) {
|
||||||
if (element.type & MPElementTypeClassStored && ![element contentUsingKey:tryKey]) {
|
if (element.type & MPElementTypeClassStored && ![element contentUsingKey:tryKey]) {
|
||||||
@ -111,6 +111,8 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
|
|
||||||
while (!content) {
|
while (!content) {
|
||||||
__block NSString *masterPassword = nil;
|
__block NSString *masterPassword = nil;
|
||||||
|
|
||||||
|
#ifdef PEARL_UIKIT
|
||||||
dispatch_group_t recoverPasswordGroup = dispatch_group_create();
|
dispatch_group_t recoverPasswordGroup = dispatch_group_create();
|
||||||
dispatch_group_enter(recoverPasswordGroup);
|
dispatch_group_enter(recoverPasswordGroup);
|
||||||
[PearlAlert showAlertWithTitle:@"Enter Old Master Password"
|
[PearlAlert showAlertWithTitle:@"Enter Old Master Password"
|
||||||
@ -130,6 +132,7 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
}
|
}
|
||||||
} cancelTitle:@"Don't Migrate" otherTitles:@"Migrate", nil];
|
} cancelTitle:@"Don't Migrate" otherTitles:@"Migrate", nil];
|
||||||
dispatch_group_wait(recoverPasswordGroup, DISPATCH_TIME_FOREVER);
|
dispatch_group_wait(recoverPasswordGroup, DISPATCH_TIME_FOREVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!masterPassword)
|
if (!masterPassword)
|
||||||
// Don't Migrate
|
// Don't Migrate
|
||||||
@ -149,7 +152,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
[[MPAppDelegate_Shared get] saveContext];
|
[[MPAppDelegate_Shared get] saveContext];
|
||||||
|
#ifdef PEARL_UIKIT
|
||||||
[activityAlert dismissAlert];
|
[activityAlert dismissAlert];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,7 +195,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:MPCheckpointSignInFailed];
|
[TestFlight passCheckpoint:MPCheckpointSignInFailed];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSignInFailed attributes:nil];
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSignInFailed attributes:nil];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return NO;
|
return NO;
|
||||||
@ -203,12 +210,14 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@try {
|
@try {
|
||||||
if ([[MPiOSConfig get].sendInfo boolValue]) {
|
if ([[MPConfig get].sendInfo boolValue]) {
|
||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight addCustomEnvironmentInformation:user.userID forKey:@"username"];
|
[TestFlight addCustomEnvironmentInformation:user.userID forKey:@"username"];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CRASHLYTICS
|
||||||
[Crashlytics setObjectValue:user.userID forKey:@"username"];
|
[Crashlytics setObjectValue:user.userID forKey:@"username"];
|
||||||
[Crashlytics setUserName:user.userID];
|
[Crashlytics setUserName:user.userID];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@catch (id exception) {
|
@catch (id exception) {
|
||||||
@ -227,7 +236,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:MPCheckpointSignedIn];
|
[TestFlight passCheckpoint:MPCheckpointSignedIn];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSignedIn attributes:nil];
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSignedIn attributes:nil];
|
||||||
|
#endif
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "MPAppDelegate_Store.h"
|
#import "MPAppDelegate_Store.h"
|
||||||
#import "LocalyticsSession.h"
|
|
||||||
|
|
||||||
@implementation MPAppDelegate_Shared (Store)
|
@implementation MPAppDelegate_Shared (Store)
|
||||||
|
|
||||||
@ -136,9 +135,11 @@
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:iCloudEnabled? MPCheckpointCloudEnabled: MPCheckpointCloudDisabled];
|
[TestFlight passCheckpoint:iCloudEnabled? MPCheckpointCloudEnabled: MPCheckpointCloudDisabled];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCloud attributes:@{
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCloud attributes:@{
|
||||||
@"enabled": iCloudEnabled? @"YES": @"NO"
|
@"enabled": iCloudEnabled? @"YES": @"NO"
|
||||||
}];
|
}];
|
||||||
|
#endif
|
||||||
|
|
||||||
[MPConfig get].iCloud = @(iCloudEnabled);
|
[MPConfig get].iCloud = @(iCloudEnabled);
|
||||||
}
|
}
|
||||||
@ -151,11 +152,13 @@
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:PearlString(MPCheckpointMPErrorUbiquity @"_%d", cause)];
|
[TestFlight passCheckpoint:PearlString(MPCheckpointMPErrorUbiquity @"_%d", cause)];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointMPErrorUbiquity attributes:@{
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointMPErrorUbiquity attributes:@{
|
||||||
@"cause": @(cause),
|
@"cause": @(cause),
|
||||||
@"error.domain": error.domain,
|
@"error.domain": error.domain,
|
||||||
@"error.code": @(error.code)
|
@"error.code": @(error.code)
|
||||||
}];
|
}];
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (cause) {
|
switch (cause) {
|
||||||
case UbiquityStoreManagerErrorCauseDeleteStore:
|
case UbiquityStoreManagerErrorCauseDeleteStore:
|
||||||
@ -172,7 +175,9 @@
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:MPCheckpointLocalStoreReset];
|
[TestFlight passCheckpoint:MPCheckpointLocalStoreReset];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointLocalStoreReset attributes:nil];
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointLocalStoreReset attributes:nil];
|
||||||
|
#endif
|
||||||
manager.hardResetEnabled = YES;
|
manager.hardResetEnabled = YES;
|
||||||
[manager hardResetLocalStorage];
|
[manager hardResetLocalStorage];
|
||||||
|
|
||||||
@ -190,7 +195,9 @@
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:MPCheckpointCloudStoreReset];
|
[TestFlight passCheckpoint:MPCheckpointCloudStoreReset];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCloudStoreReset attributes:nil];
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCloudStoreReset attributes:nil];
|
||||||
|
#endif
|
||||||
manager.hardResetEnabled = YES;
|
manager.hardResetEnabled = YES;
|
||||||
[manager hardResetCloudStorage];
|
[manager hardResetCloudStorage];
|
||||||
break;
|
break;
|
||||||
@ -276,7 +283,7 @@
|
|||||||
return MPImportResultInternalError;
|
return MPImportResultInternalError;
|
||||||
}
|
}
|
||||||
if ([users count] > 1) {
|
if ([users count] > 1) {
|
||||||
err(@"While looking for user: %@, found more than one: %u", importUserName, [users count]);
|
err(@"While looking for user: %@, found more than one: %lu", importUserName, (unsigned long)[users count]);
|
||||||
return MPImportResultInternalError;
|
return MPImportResultInternalError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,7 +344,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ask for confirmation to import these sites and the master password of the user.
|
// Ask for confirmation to import these sites and the master password of the user.
|
||||||
inf(@"Importing %u sites, deleting %u sites, for user: %@", [importedSiteElements count], [elementsToDelete count], [MPUserEntity idFor:importUserName]);
|
inf(@"Importing %lu sites, deleting %lu sites, for user: %@", (unsigned long)[importedSiteElements count], (unsigned long)[elementsToDelete count], [MPUserEntity idFor:importUserName]);
|
||||||
NSString *userMasterPassword = userPassword(user.name, [importedSiteElements count], [elementsToDelete count]);
|
NSString *userMasterPassword = userPassword(user.name, [importedSiteElements count], [elementsToDelete count]);
|
||||||
if (!userMasterPassword) {
|
if (!userMasterPassword) {
|
||||||
inf(@"Import cancelled.");
|
inf(@"Import cancelled.");
|
||||||
@ -424,7 +431,9 @@
|
|||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:MPCheckpointSitesImported];
|
[TestFlight passCheckpoint:MPCheckpointSitesImported];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSitesImported attributes:nil];
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSitesImported attributes:nil];
|
||||||
|
#endif
|
||||||
|
|
||||||
return MPImportResultSuccess;
|
return MPImportResultSuccess;
|
||||||
}
|
}
|
||||||
@ -480,16 +489,18 @@
|
|||||||
content = element.exportContent;
|
content = element.exportContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
[export appendFormat:@"%@ %8d %8s %20s\t%@\n",
|
[export appendFormat:@"%@ %8ld %8s %20s\t%@\n",
|
||||||
[[NSDateFormatter rfc3339DateFormatter] stringFromDate:lastUsed], uses,
|
[[NSDateFormatter rfc3339DateFormatter] stringFromDate:lastUsed], (long)uses,
|
||||||
[PearlString(@"%u:%u", type, version) UTF8String], [name UTF8String], content
|
[PearlString(@"%u:%lu", type, (unsigned long)version) UTF8String], [name UTF8String], content
|
||||||
? content: @""];
|
? content: @""];
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TESTFLIGHT_SDK_VERSION
|
#ifdef TESTFLIGHT_SDK_VERSION
|
||||||
[TestFlight passCheckpoint:MPCheckpointSitesExported];
|
[TestFlight passCheckpoint:MPCheckpointSitesExported];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef LOCALYTICS
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSitesExported attributes:nil];
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSitesExported attributes:nil];
|
||||||
|
#endif
|
||||||
|
|
||||||
return export;
|
return export;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
@interface MPConfig : PearlConfig
|
@interface MPConfig : PearlConfig
|
||||||
|
|
||||||
|
@property (nonatomic, retain) NSNumber *sendInfo;
|
||||||
@property (nonatomic, retain) NSNumber *rememberLogin;
|
@property (nonatomic, retain) NSNumber *rememberLogin;
|
||||||
|
|
||||||
@property (nonatomic, retain) NSNumber *iCloud;
|
@property (nonatomic, retain) NSNumber *iCloud;
|
||||||
|
@ -6,10 +6,11 @@
|
|||||||
// Copyright (c) 2012 Lyndir. All rights reserved.
|
// Copyright (c) 2012 Lyndir. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#import "MPConfig.h"
|
||||||
#import "MPAppDelegate.h"
|
#import "MPAppDelegate.h"
|
||||||
|
|
||||||
@implementation MPConfig
|
@implementation MPConfig
|
||||||
@dynamic rememberLogin, iCloud, iCloudDecided;
|
@dynamic sendInfo, rememberLogin, iCloud, iCloudDecided;
|
||||||
|
|
||||||
- (id)init {
|
- (id)init {
|
||||||
|
|
||||||
@ -18,6 +19,7 @@
|
|||||||
|
|
||||||
[self.defaults registerDefaults:@{NSStringFromSelector(@selector(askForReviews)): @YES,
|
[self.defaults registerDefaults:@{NSStringFromSelector(@selector(askForReviews)): @YES,
|
||||||
|
|
||||||
|
NSStringFromSelector(@selector(sendInfo)): @NO,
|
||||||
NSStringFromSelector(@selector(rememberLogin)): @NO,
|
NSStringFromSelector(@selector(rememberLogin)): @NO,
|
||||||
NSStringFromSelector(@selector(iCloud)): @NO,
|
NSStringFromSelector(@selector(iCloud)): @NO,
|
||||||
NSStringFromSelector(@selector(iCloudDecided)): @NO}];
|
NSStringFromSelector(@selector(iCloudDecided)): @NO}];
|
||||||
|
@ -132,8 +132,8 @@
|
|||||||
|
|
||||||
- (NSString *)debugDescription {
|
- (NSString *)debugDescription {
|
||||||
|
|
||||||
return PearlString(@"{%@: name=%@, user=%@, type=%d, uses=%d, lastUsed=%@, version=%d, loginName=%@, requiresExplicitMigration=%d}",
|
return PearlString(@"{%@: name=%@, user=%@, type=%d, uses=%ld, lastUsed=%@, version=%ld, loginName=%@, requiresExplicitMigration=%d}",
|
||||||
NSStringFromClass([self class]), self.name, self.user.name, self.type, self.uses, self.lastUsed, self.version,
|
NSStringFromClass([self class]), self.name, self.user.name, self.type, (long)self.uses, self.lastUsed, (long)self.version,
|
||||||
self.loginName, self.requiresExplicitMigration);
|
self.loginName, self.requiresExplicitMigration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,9 +141,9 @@
|
|||||||
|
|
||||||
while (self.version < MPAlgorithmDefaultVersion)
|
while (self.version < MPAlgorithmDefaultVersion)
|
||||||
if ([MPAlgorithmForVersion(self.version + 1) migrateElement:self explicit:explicit])
|
if ([MPAlgorithmForVersion(self.version + 1) migrateElement:self explicit:explicit])
|
||||||
inf(@"%@ migration to version: %d succeeded for element: %@", explicit? @"Explicit": @"Automatic", self.version + 1, self);
|
inf(@"%@ migration to version: %ld succeeded for element: %@", explicit? @"Explicit": @"Automatic", (long)self.version + 1, self);
|
||||||
else {
|
else {
|
||||||
wrn(@"%@ migration to version: %d failed for element: %@", explicit? @"Explicit": @"Automatic", self.version + 1, self);
|
wrn(@"%@ migration to version: %ld failed for element: %@", explicit? @"Explicit": @"Automatic", (long)self.version + 1, self);
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ typedef enum {
|
|||||||
#define MPCheckpointAppGorillas @"MPCheckpointAppGorillas"
|
#define MPCheckpointAppGorillas @"MPCheckpointAppGorillas"
|
||||||
#define MPCheckpointAppDeBlock @"MPCheckpointAppDeBlock"
|
#define MPCheckpointAppDeBlock @"MPCheckpointAppDeBlock"
|
||||||
|
|
||||||
#define MPNotificationSignedIn @"MPNotificationKeySet"
|
#define MPNotificationSignedIn @"MPNotificationSignedIn"
|
||||||
#define MPNotificationSignedOut @"MPNotificationKeyUnset"
|
#define MPNotificationSignedOut @"MPNotificationSignedOut"
|
||||||
#define MPNotificationKeyForgotten @"MPNotificationKeyForgotten"
|
#define MPNotificationKeyForgotten @"MPNotificationKeyForgotten"
|
||||||
#define MPNotificationElementUpdated @"MPNotificationElementUpdated"
|
#define MPNotificationElementUpdated @"MPNotificationElementUpdated"
|
||||||
|
@ -12,18 +12,22 @@
|
|||||||
|
|
||||||
@interface MPAppDelegate : MPAppDelegate_Shared<NSApplicationDelegate>
|
@interface MPAppDelegate : MPAppDelegate_Shared<NSApplicationDelegate>
|
||||||
|
|
||||||
@property (strong) NSStatusItem *statusItem;
|
@property (nonatomic, strong) NSStatusItem *statusItem;
|
||||||
@property (strong) MPPasswordWindowController *passwordWindow;
|
@property (nonatomic, strong) MPPasswordWindowController *passwordWindow;
|
||||||
@property (weak) IBOutlet NSMenuItem *lockItem;
|
@property (nonatomic, weak) IBOutlet NSMenuItem *lockItem;
|
||||||
@property (weak) IBOutlet NSMenuItem *showItem;
|
@property (nonatomic, weak) IBOutlet NSMenuItem *showItem;
|
||||||
@property (strong) IBOutlet NSMenu *statusMenu;
|
@property (nonatomic, strong) IBOutlet NSMenu *statusMenu;
|
||||||
@property (weak) IBOutlet NSMenuItem *useICloudItem;
|
@property (nonatomic, weak) IBOutlet NSMenuItem *useICloudItem;
|
||||||
@property (weak) IBOutlet NSMenuItem *rememberPasswordItem;
|
@property (nonatomic, weak) IBOutlet NSMenuItem *rememberPasswordItem;
|
||||||
@property (weak) IBOutlet NSMenuItem *savePasswordItem;
|
@property (nonatomic, weak) IBOutlet NSMenuItem *savePasswordItem;
|
||||||
|
@property (nonatomic, weak) IBOutlet NSMenuItem *createUserItem;
|
||||||
|
@property (nonatomic, weak) IBOutlet NSMenuItem *usersItem;
|
||||||
|
|
||||||
+ (MPAppDelegate *)get;
|
+ (MPAppDelegate *)get;
|
||||||
|
|
||||||
- (IBAction)activate:(id)sender;
|
- (IBAction)activate:(id)sender;
|
||||||
- (IBAction)togglePreference:(NSMenuItem *)sender;
|
- (IBAction)togglePreference:(NSMenuItem *)sender;
|
||||||
|
- (IBAction)newUser:(NSMenuItem *)sender;
|
||||||
|
- (IBAction)signOut:(id)sender;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
@synthesize passwordWindow;
|
@synthesize passwordWindow;
|
||||||
|
|
||||||
@synthesize key;
|
@synthesize key;
|
||||||
@synthesize keyID;
|
|
||||||
|
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wfour-char-constants"
|
#pragma clang diagnostic ignored "-Wfour-char-constants"
|
||||||
@ -37,7 +36,7 @@ static EventHotKeyID MPShowHotKey = {.signature = 'show', .id = 1};
|
|||||||
[MPConfig get];
|
[MPConfig get];
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
[PearlLogger get].autoprintLevel = PearlLogLevelTrace;
|
[PearlLogger get].printLevel = PearlLogLevelTrace;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,10 +61,56 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
return eventNotHandledErr;
|
return eventNotHandledErr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)updateUsers {
|
||||||
|
|
||||||
|
[[[self.usersItem submenu] itemArray] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
|
||||||
|
if (idx > 1)
|
||||||
|
[[self.usersItem submenu] removeItemAtIndex:(NSInteger)idx];
|
||||||
|
}];
|
||||||
|
|
||||||
|
NSManagedObjectContext *moc = [MPAppDelegate managedObjectContextIfReady];
|
||||||
|
if (!moc) {
|
||||||
|
[self.createUserItem setEnabled:NO];
|
||||||
|
[[self.usersItem.submenu addItemWithTitle:@"Loading..." action:NULL keyEquivalent:@""] setEnabled:NO];
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[self.createUserItem setEnabled:YES];
|
||||||
|
[moc performBlockAndWait:^{
|
||||||
|
NSArray *users = nil;
|
||||||
|
NSError *error = nil;
|
||||||
|
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([MPUserEntity class])];
|
||||||
|
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"lastUsed" ascending:NO]];
|
||||||
|
users = [moc executeFetchRequest:fetchRequest error:&error];
|
||||||
|
if (!users)
|
||||||
|
err(@"Failed to load users: %@", error);
|
||||||
|
|
||||||
|
for (MPUserEntity *user in users) {
|
||||||
|
NSMenuItem *userItem = [[NSMenuItem alloc] initWithTitle:user.name action:@selector(selectUser:) keyEquivalent:@""];
|
||||||
|
[userItem setTarget:self];
|
||||||
|
[userItem setRepresentedObject:user];
|
||||||
|
[[self.usersItem submenu] addItem:userItem];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)selectUser:(NSMenuItem *)item {
|
||||||
|
|
||||||
|
NSAssert1([[item representedObject] isKindOfClass:[MPUserEntity class]], @"Not a user: %@", item.representedObject);
|
||||||
|
|
||||||
|
self.activeUser = item.representedObject;
|
||||||
|
|
||||||
|
[[[self.usersItem submenu] itemArray] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
|
||||||
|
[obj setState:NSOffState];
|
||||||
|
}];
|
||||||
|
item.state = NSOnState;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)showMenu {
|
- (void)showMenu {
|
||||||
|
|
||||||
self.rememberPasswordItem.state = [[MPConfig get].rememberKey boolValue]? NSOnState: NSOffState;
|
self.rememberPasswordItem.state = [[MPConfig get].rememberLogin boolValue]? NSOnState: NSOffState;
|
||||||
self.savePasswordItem.state = [[MPConfig get].saveKey boolValue]? NSOnState: NSOffState;
|
self.savePasswordItem.state = [MPAppDelegate get].activeUser.saveKey? NSOnState: NSOffState;
|
||||||
self.showItem.enabled = ![self.passwordWindow.window isVisible];
|
self.showItem.enabled = ![self.passwordWindow.window isVisible];
|
||||||
|
|
||||||
[self.statusItem popUpStatusItemMenu:self.statusMenu];
|
[self.statusItem popUpStatusItemMenu:self.statusMenu];
|
||||||
@ -84,17 +129,25 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
if (sender == useICloudItem)
|
if (sender == useICloudItem)
|
||||||
[self.storeManager useiCloudStore:sender.state == NSOffState alertUser:YES];
|
[self.storeManager useiCloudStore:sender.state == NSOffState alertUser:YES];
|
||||||
if (sender == rememberPasswordItem)
|
if (sender == rememberPasswordItem)
|
||||||
[MPConfig get].rememberKey = [NSNumber numberWithBool:![[MPConfig get].rememberKey boolValue]];
|
[MPConfig get].rememberLogin = [NSNumber numberWithBool:![[MPConfig get].rememberLogin boolValue]];
|
||||||
if (sender == savePasswordItem)
|
if (sender == savePasswordItem)
|
||||||
[MPConfig get].saveKey = [NSNumber numberWithBool:![[MPConfig get].saveKey boolValue]];
|
[MPAppDelegate get].activeUser.saveKey = ![MPAppDelegate get].activeUser.saveKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)newUser:(NSMenuItem *)sender {
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)signOut:(id)sender {
|
||||||
|
|
||||||
|
[self signOutAnimated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didUpdateConfigForKey:(SEL)configKey fromValue:(id)oldValue {
|
- (void)didUpdateConfigForKey:(SEL)configKey fromValue:(id)oldValue {
|
||||||
|
|
||||||
if (configKey == @selector(rememberKey))
|
if (configKey == @selector(rememberLogin))
|
||||||
self.rememberPasswordItem.state = [[MPConfig get].rememberKey boolValue]? NSOnState: NSOffState;
|
self.rememberPasswordItem.state = [[MPConfig get].rememberLogin boolValue]? NSOnState: NSOffState;
|
||||||
if (configKey == @selector(saveKey))
|
if (configKey == @selector(saveKey))
|
||||||
self.savePasswordItem.state = [[MPConfig get].saveKey boolValue]? NSOnState: NSOffState;
|
self.savePasswordItem.state = [MPAppDelegate get].activeUser.saveKey? NSOnState: NSOffState;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
||||||
@ -111,7 +164,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window {
|
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window {
|
||||||
|
|
||||||
return [[self managedObjectContext] undoManager];
|
return [[self managedObjectContextIfReady] undoManager];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - NSApplicationDelegate
|
#pragma mark - NSApplicationDelegate
|
||||||
@ -132,6 +185,16 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
self.statusItem.highlightMode = YES;
|
self.statusItem.highlightMode = YES;
|
||||||
self.statusItem.target = self;
|
self.statusItem.target = self;
|
||||||
self.statusItem.action = @selector(showMenu);
|
self.statusItem.action = @selector(showMenu);
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserverForName:PersistentStoreDidChange object:nil queue:nil usingBlock:
|
||||||
|
^(NSNotification *note) {
|
||||||
|
[self updateUsers];
|
||||||
|
}];
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserverForName:PersistentStoreDidMergeChanges object:nil queue:nil usingBlock:
|
||||||
|
^(NSNotification *note) {
|
||||||
|
[self updateUsers];
|
||||||
|
}];
|
||||||
|
[self updateUsers];
|
||||||
|
|
||||||
// Global hotkey.
|
// Global hotkey.
|
||||||
EventHotKeyRef hotKeyRef;
|
EventHotKeyRef hotKeyRef;
|
||||||
@ -163,28 +226,28 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
- (void)applicationWillResignActive:(NSNotification *)notification {
|
- (void)applicationWillResignActive:(NSNotification *)notification {
|
||||||
|
|
||||||
if (![[MPConfig get].rememberKey boolValue])
|
if (![[MPConfig get].rememberLogin boolValue])
|
||||||
self.key = nil;
|
self.key = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
||||||
// Save changes in the application's managed object context before the application terminates.
|
// Save changes in the application's managed object context before the application terminates.
|
||||||
|
|
||||||
if (![self managedObjectContext]) {
|
if (![self managedObjectContextIfReady]) {
|
||||||
return NSTerminateNow;
|
return NSTerminateNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (![[self managedObjectContext] commitEditing]) {
|
if (![[self managedObjectContextIfReady] commitEditing]) {
|
||||||
NSLog(@"%@:%@ unable to commit editing to terminate", [self class], NSStringFromSelector(_cmd));
|
NSLog(@"%@:%@ unable to commit editing to terminate", [self class], NSStringFromSelector(_cmd));
|
||||||
return NSTerminateCancel;
|
return NSTerminateCancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (![[self managedObjectContext] hasChanges]) {
|
if (![[self managedObjectContextIfReady] hasChanges]) {
|
||||||
return NSTerminateNow;
|
return NSTerminateNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSError *error = nil;
|
NSError *error = nil;
|
||||||
if (![[self managedObjectContext] save:&error]) {
|
if (![[self managedObjectContextIfReady] save:&error]) {
|
||||||
|
|
||||||
// Customize this code block to include application-specific recovery steps.
|
// Customize this code block to include application-specific recovery steps.
|
||||||
BOOL result = [sender presentError:error];
|
BOOL result = [sender presentError:error];
|
||||||
@ -215,9 +278,48 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
#pragma mark - UbiquityStoreManagerDelegate
|
#pragma mark - UbiquityStoreManagerDelegate
|
||||||
|
|
||||||
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToiCloud:(BOOL)iCloudEnabled {
|
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToiCloud:(BOOL)iCloudEnabled {
|
||||||
|
|
||||||
|
[super ubiquityStoreManager:manager didSwitchToiCloud:iCloudEnabled];
|
||||||
|
|
||||||
self.useICloudItem.state = iCloudEnabled? NSOnState: NSOffState;
|
self.useICloudItem.state = iCloudEnabled? NSOnState: NSOffState;
|
||||||
self.useICloudItem.enabled = !iCloudEnabled;
|
self.useICloudItem.enabled = !iCloudEnabled;
|
||||||
|
|
||||||
|
if (![[MPConfig get].iCloudDecided boolValue]) {
|
||||||
|
if (iCloudEnabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch ([[NSAlert alertWithMessageText:@"iCloud Is Disabled"
|
||||||
|
defaultButton:@"Enable iCloud" alternateButton:@"Leave iCloud Off" otherButton:@"Explain?"
|
||||||
|
informativeTextWithFormat:@"It is highly recommended you enable iCloud."] runModal]) {
|
||||||
|
case NSAlertDefaultReturn: {
|
||||||
|
[MPConfig get].iCloudDecided = @YES;
|
||||||
|
[manager useiCloudStore:YES alertUser:NO];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case NSAlertOtherReturn: {
|
||||||
|
[[NSAlert alertWithMessageText:@"About iCloud"
|
||||||
|
defaultButton:[PearlStrings get].commonButtonThanks alternateButton:nil otherButton:nil
|
||||||
|
informativeTextWithFormat:
|
||||||
|
@"iCloud is Apple's solution for saving your data in \"the cloud\" "
|
||||||
|
@"and making sure your other iPhones, iPads and Macs are in sync.\n\n"
|
||||||
|
@"For Master Password, that means your sites are available on all your "
|
||||||
|
@"Apple devices, and you always have a backup of them in case "
|
||||||
|
@"you loose one or need to restore.\n\n"
|
||||||
|
@"Because of the way Master Password works, it doesn't need to send your "
|
||||||
|
@"site's passwords to Apple. Only their names are saved to make it easier "
|
||||||
|
@"for you to find the site you need. For some sites you may have set "
|
||||||
|
@"a user-specified password: these are sent to iCloud after being encrypted "
|
||||||
|
@"with your master password.\n\n"
|
||||||
|
@"Apple can never see any of your passwords."] runModal];
|
||||||
|
[self ubiquityStoreManager:manager didSwitchToiCloud:iCloudEnabled];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
15
MasterPassword/Mac/MPMacConfig.h
Normal file
15
MasterPassword/Mac/MPMacConfig.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
//
|
||||||
|
// MPConfig.h
|
||||||
|
// MasterPassword
|
||||||
|
//
|
||||||
|
// Created by Maarten Billemont on 02/01/12.
|
||||||
|
// Copyright (c) 2012 Lyndir. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPConfig.h"
|
||||||
|
|
||||||
|
@interface MPMacConfig : MPConfig
|
||||||
|
|
||||||
|
+ (MPMacConfig *)get;
|
||||||
|
|
||||||
|
@end
|
26
MasterPassword/Mac/MPMacConfig.m
Normal file
26
MasterPassword/Mac/MPMacConfig.m
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// MPConfig.m
|
||||||
|
// MasterPassword
|
||||||
|
//
|
||||||
|
// Created by Maarten Billemont on 02/01/12.
|
||||||
|
// Copyright (c) 2012 Lyndir. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
@implementation MPMacConfig
|
||||||
|
|
||||||
|
- (id)init {
|
||||||
|
|
||||||
|
if (!(self = [super init]))
|
||||||
|
return self;
|
||||||
|
|
||||||
|
[self.defaults registerDefaults:@{NSStringFromSelector(@selector(iTunesID)): @"510296984"}];
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (MPMacConfig *)get {
|
||||||
|
|
||||||
|
return (MPMacConfig *)[super get];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@ -13,11 +13,13 @@
|
|||||||
NSString *_content;
|
NSString *_content;
|
||||||
}
|
}
|
||||||
|
|
||||||
@property (strong) NSString *content;
|
@property (nonatomic, strong) NSString *content;
|
||||||
|
|
||||||
@property (weak) IBOutlet NSTextField *siteField;
|
@property (nonatomic, weak) IBOutlet NSTextField *siteField;
|
||||||
@property (weak) IBOutlet NSTextField *contentField;
|
@property (nonatomic, weak) IBOutlet NSTextField *contentField;
|
||||||
@property (weak) IBOutlet NSTextField *tipField;
|
@property (nonatomic, weak) IBOutlet NSTextField *tipField;
|
||||||
|
@property (nonatomic, weak) IBOutlet NSView *contentContainer;
|
||||||
|
@property (nonatomic, weak) IBOutlet NSProgressIndicator *progressView;
|
||||||
|
|
||||||
- (void)unlock;
|
- (void)unlock;
|
||||||
|
|
||||||
|
@ -58,9 +58,9 @@
|
|||||||
|
|
||||||
- (void)unlock {
|
- (void)unlock {
|
||||||
|
|
||||||
if (![MPAppDelegate get].key)
|
if ([[MPAppDelegate get] signInAsUser:[MPAppDelegate get].activeUser usingMasterPassword:nil])
|
||||||
// Try and load the key from the keychain.
|
// Load the key from the keychain.
|
||||||
[[MPAppDelegate get] loadStoredKey];
|
return;
|
||||||
|
|
||||||
if (![MPAppDelegate get].key)
|
if (![MPAppDelegate get].key)
|
||||||
// Ask the user to set the key through his master password.
|
// Ask the user to set the key through his master password.
|
||||||
@ -69,8 +69,8 @@
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
NSAlert *alert = [NSAlert alertWithMessageText:@"Master Password is locked."
|
NSAlert *alert = [NSAlert alertWithMessageText:@"Master Password is locked."
|
||||||
defaultButton:@"Unlock" alternateButton:@"Change" otherButton:@"Quit"
|
defaultButton:@"Unlock" alternateButton:@"Change" otherButton:@"Cancel"
|
||||||
informativeTextWithFormat:@"Your master password is required to unlock the application."];
|
informativeTextWithFormat:@"The master password is required to unlock the application for:\n\n%@", [MPAppDelegate get].activeUser.name];
|
||||||
NSSecureTextField *passwordField = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 22)];
|
NSSecureTextField *passwordField = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 22)];
|
||||||
[alert setAccessoryView:passwordField];
|
[alert setAccessoryView:passwordField];
|
||||||
[alert layout];
|
[alert layout];
|
||||||
@ -94,17 +94,31 @@
|
|||||||
@"You can always change back to your current master password later.\n"
|
@"You can always change back to your current master password later.\n"
|
||||||
@"Your current sites and passwords will then become available again."] runModal]
|
@"Your current sites and passwords will then become available again."] runModal]
|
||||||
== 1)
|
== 1)
|
||||||
[[MPAppDelegate get] forgetKey];
|
[[MPAppDelegate get] forgetSavedKeyFor:[MPAppDelegate get].activeUser];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSAlertOtherReturn:
|
case NSAlertOtherReturn:
|
||||||
// "Quit" button.
|
// "Cancel" button.
|
||||||
[[NSApplication sharedApplication] terminate:self];
|
[self.window close];
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case NSAlertDefaultReturn:
|
case NSAlertDefaultReturn: {
|
||||||
// "Unlock" button.
|
// "Unlock" button.
|
||||||
[[MPAppDelegate get] tryMasterPassword:[(NSSecureTextField *)alert.accessoryView stringValue]];
|
self.contentContainer.alphaValue = 0;
|
||||||
|
[self.progressView startAnimation:nil];
|
||||||
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
|
||||||
|
BOOL success = [[MPAppDelegate get] signInAsUser:[MPAppDelegate get].activeUser usingMasterPassword:[(NSSecureTextField *)alert.accessoryView stringValue]];
|
||||||
|
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
[self.progressView stopAnimation:nil];
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
self.contentContainer.alphaValue = 1;
|
||||||
|
else
|
||||||
|
[self.window close];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +126,7 @@
|
|||||||
forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index {
|
forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index {
|
||||||
|
|
||||||
NSString *query = [[control stringValue] substringWithRange:charRange];
|
NSString *query = [[control stringValue] substringWithRange:charRange];
|
||||||
if (![query length] || ![MPAppDelegate get].keyID)
|
if (![query length] || ![MPAppDelegate get].key)
|
||||||
return nil;
|
return nil;
|
||||||
|
|
||||||
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([MPElementEntity class])];
|
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([MPElementEntity class])];
|
||||||
@ -121,7 +135,7 @@
|
|||||||
query, query, [MPAppDelegate get].activeUser];
|
query, query, [MPAppDelegate get].activeUser];
|
||||||
|
|
||||||
NSError *error = nil;
|
NSError *error = nil;
|
||||||
self.siteResults = [[MPAppDelegate managedObjectContext] executeFetchRequest:fetchRequest error:&error];
|
self.siteResults = [[MPAppDelegate managedObjectContextIfReady] executeFetchRequest:fetchRequest error:&error];
|
||||||
if (error)
|
if (error)
|
||||||
err(@"Couldn't fetch elements: %@", error);
|
err(@"Couldn't fetch elements: %@", error);
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -29,7 +29,7 @@
|
|||||||
<key>LSUIElement</key>
|
<key>LSUIElement</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright © 2012 Lyndir. All rights reserved.</string>
|
<string>Copyright © 2011-2013 Lyndir. All rights reserved.</string>
|
||||||
<key>NSMainNibFile</key>
|
<key>NSMainNibFile</key>
|
||||||
<string>MainMenu</string>
|
<string>MainMenu</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
@ -2,12 +2,16 @@
|
|||||||
// Prefix header for all source files of the 'MasterPassword' target in the 'MasterPassword' project
|
// Prefix header for all source files of the 'MasterPassword' target in the 'MasterPassword' project
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#import "Pearl-Prefix.pch"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __OBJC__
|
#ifdef __OBJC__
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
#endif
|
#import <CoreData/CoreData.h>
|
||||||
|
|
||||||
#import "Pearl-Prefix.pch"
|
|
||||||
|
|
||||||
#import "MPTypes.h"
|
#import "MPTypes.h"
|
||||||
|
#import "MPMacConfig.h"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||||
<data>
|
<data>
|
||||||
<int key="IBDocument.SystemTarget">1070</int>
|
<int key="IBDocument.SystemTarget">1070</int>
|
||||||
<string key="IBDocument.SystemVersion">11D50</string>
|
<string key="IBDocument.SystemVersion">12C60</string>
|
||||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
<string key="IBDocument.InterfaceBuilderVersion">2840</string>
|
||||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
<string key="IBDocument.AppKitVersion">1187.34</string>
|
||||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
<string key="IBDocument.HIToolboxVersion">625.00</string>
|
||||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="NS.object.0">2182</string>
|
<string key="NS.object.0">2840</string>
|
||||||
</object>
|
</object>
|
||||||
<array key="IBDocument.IntegratedClassDependencies">
|
<array key="IBDocument.IntegratedClassDependencies">
|
||||||
<string>NSMenuItem</string>
|
|
||||||
<string>NSMenu</string>
|
|
||||||
<string>NSCustomObject</string>
|
<string>NSCustomObject</string>
|
||||||
|
<string>NSMenu</string>
|
||||||
|
<string>NSMenuItem</string>
|
||||||
<string>NSUserDefaultsController</string>
|
<string>NSUserDefaultsController</string>
|
||||||
</array>
|
</array>
|
||||||
<array key="IBDocument.PluginDependencies">
|
<array key="IBDocument.PluginDependencies">
|
||||||
@ -61,6 +61,38 @@
|
|||||||
<string key="NSResourceName">NSMenuMixedState</string>
|
<string key="NSResourceName">NSMenuMixedState</string>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="NSMenuItem" id="11982480">
|
||||||
|
<reference key="NSMenu" ref="764588027"/>
|
||||||
|
<string key="NSTitle">Users</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="552246001"/>
|
||||||
|
<reference key="NSMixedImage" ref="752047669"/>
|
||||||
|
<string key="NSAction">submenuAction:</string>
|
||||||
|
<object class="NSMenu" key="NSSubmenu" id="934187555">
|
||||||
|
<string key="NSTitle">Users</string>
|
||||||
|
<array class="NSMutableArray" key="NSMenuItems">
|
||||||
|
<object class="NSMenuItem" id="576787569">
|
||||||
|
<reference key="NSMenu" ref="934187555"/>
|
||||||
|
<string key="NSTitle">New User</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="552246001"/>
|
||||||
|
<reference key="NSMixedImage" ref="752047669"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="925131766">
|
||||||
|
<reference key="NSMenu" ref="934187555"/>
|
||||||
|
<bool key="NSIsDisabled">YES</bool>
|
||||||
|
<bool key="NSIsSeparator">YES</bool>
|
||||||
|
<string key="NSTitle"/>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="552246001"/>
|
||||||
|
<reference key="NSMixedImage" ref="752047669"/>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
<object class="NSMenuItem" id="851296005">
|
<object class="NSMenuItem" id="851296005">
|
||||||
<reference key="NSMenu" ref="764588027"/>
|
<reference key="NSMenu" ref="764588027"/>
|
||||||
<string key="NSTitle">Preferences</string>
|
<string key="NSTitle">Preferences</string>
|
||||||
@ -286,6 +318,30 @@
|
|||||||
</object>
|
</object>
|
||||||
<int key="connectionID">754</int>
|
<int key="connectionID">754</int>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">newUser:</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="576787569"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">761</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">usersItem</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="11982480"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">762</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">createUserItem</string>
|
||||||
|
<reference key="source" ref="976324537"/>
|
||||||
|
<reference key="destination" ref="576787569"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">763</int>
|
||||||
|
</object>
|
||||||
</array>
|
</array>
|
||||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
<array key="orderedObjects">
|
<array key="orderedObjects">
|
||||||
@ -338,6 +394,7 @@
|
|||||||
<reference ref="846612332"/>
|
<reference ref="846612332"/>
|
||||||
<reference ref="229948989"/>
|
<reference ref="229948989"/>
|
||||||
<reference ref="851296005"/>
|
<reference ref="851296005"/>
|
||||||
|
<reference ref="11982480"/>
|
||||||
</array>
|
</array>
|
||||||
<reference key="parent" ref="0"/>
|
<reference key="parent" ref="0"/>
|
||||||
</object>
|
</object>
|
||||||
@ -412,6 +469,33 @@
|
|||||||
<reference key="object" ref="123831322"/>
|
<reference key="object" ref="123831322"/>
|
||||||
<reference key="parent" ref="800575174"/>
|
<reference key="parent" ref="800575174"/>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">755</int>
|
||||||
|
<reference key="object" ref="11982480"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="934187555"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="764588027"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">756</int>
|
||||||
|
<reference key="object" ref="934187555"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="576787569"/>
|
||||||
|
<reference ref="925131766"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="11982480"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">757</int>
|
||||||
|
<reference key="object" ref="576787569"/>
|
||||||
|
<reference key="parent" ref="934187555"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">759</int>
|
||||||
|
<reference key="object" ref="925131766"/>
|
||||||
|
<reference key="parent" ref="934187555"/>
|
||||||
|
</object>
|
||||||
</array>
|
</array>
|
||||||
</object>
|
</object>
|
||||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||||
@ -434,21 +518,25 @@
|
|||||||
<string key="746.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="746.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="747.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="747.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="748.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="748.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="755.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="756.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="757.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="759.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||||
<nil key="activeLocalization"/>
|
<nil key="activeLocalization"/>
|
||||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">754</int>
|
<int key="maxID">763</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
<object class="IBPartialClassDescription">
|
<object class="IBPartialClassDescription">
|
||||||
<string key="className">MPAppDelegate</string>
|
<string key="className">MPAppDelegate</string>
|
||||||
<string key="superclassName">NSObject</string>
|
<string key="superclassName">MPAppDelegate_Shared</string>
|
||||||
<dictionary class="NSMutableDictionary" key="actions">
|
<dictionary class="NSMutableDictionary" key="actions">
|
||||||
<string key="activate:">id</string>
|
<string key="activate:">id</string>
|
||||||
<string key="signOut:">id</string>
|
<string key="newUser:">NSMenuItem</string>
|
||||||
<string key="togglePreference:">NSMenuItem</string>
|
<string key="togglePreference:">NSMenuItem</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||||
@ -456,9 +544,9 @@
|
|||||||
<string key="name">activate:</string>
|
<string key="name">activate:</string>
|
||||||
<string key="candidateClassName">id</string>
|
<string key="candidateClassName">id</string>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBActionInfo" key="signOut:">
|
<object class="IBActionInfo" key="newUser:">
|
||||||
<string key="name">signOut:</string>
|
<string key="name">newUser:</string>
|
||||||
<string key="candidateClassName">id</string>
|
<string key="candidateClassName">NSMenuItem</string>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBActionInfo" key="togglePreference:">
|
<object class="IBActionInfo" key="togglePreference:">
|
||||||
<string key="name">togglePreference:</string>
|
<string key="name">togglePreference:</string>
|
||||||
@ -467,17 +555,23 @@
|
|||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary class="NSMutableDictionary" key="outlets">
|
<dictionary class="NSMutableDictionary" key="outlets">
|
||||||
<string key="lockItem">NSMenuItem</string>
|
<string key="lockItem">NSMenuItem</string>
|
||||||
|
<string key="newUserItem">NSMenuItem</string>
|
||||||
<string key="rememberPasswordItem">NSMenuItem</string>
|
<string key="rememberPasswordItem">NSMenuItem</string>
|
||||||
<string key="savePasswordItem">NSMenuItem</string>
|
<string key="savePasswordItem">NSMenuItem</string>
|
||||||
<string key="showItem">NSMenuItem</string>
|
<string key="showItem">NSMenuItem</string>
|
||||||
<string key="statusMenu">NSMenu</string>
|
<string key="statusMenu">NSMenu</string>
|
||||||
<string key="useICloudItem">NSMenuItem</string>
|
<string key="useICloudItem">NSMenuItem</string>
|
||||||
|
<string key="usersItem">NSMenuItem</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
<object class="IBToOneOutletInfo" key="lockItem">
|
<object class="IBToOneOutletInfo" key="lockItem">
|
||||||
<string key="name">lockItem</string>
|
<string key="name">lockItem</string>
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
<string key="candidateClassName">NSMenuItem</string>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="newUserItem">
|
||||||
|
<string key="name">newUserItem</string>
|
||||||
|
<string key="candidateClassName">NSMenuItem</string>
|
||||||
|
</object>
|
||||||
<object class="IBToOneOutletInfo" key="rememberPasswordItem">
|
<object class="IBToOneOutletInfo" key="rememberPasswordItem">
|
||||||
<string key="name">rememberPasswordItem</string>
|
<string key="name">rememberPasswordItem</string>
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
<string key="candidateClassName">NSMenuItem</string>
|
||||||
@ -498,12 +592,24 @@
|
|||||||
<string key="name">useICloudItem</string>
|
<string key="name">useICloudItem</string>
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
<string key="candidateClassName">NSMenuItem</string>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo" key="usersItem">
|
||||||
|
<string key="name">usersItem</string>
|
||||||
|
<string key="candidateClassName">NSMenuItem</string>
|
||||||
|
</object>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
<string key="majorKey">IBProjectSource</string>
|
<string key="majorKey">IBProjectSource</string>
|
||||||
<string key="minorKey">./Classes/MPAppDelegate.h</string>
|
<string key="minorKey">./Classes/MPAppDelegate.h</string>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">MPAppDelegate_Shared</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBProjectSource</string>
|
||||||
|
<string key="minorKey">./Classes/MPAppDelegate_Shared.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
</array>
|
</array>
|
||||||
</object>
|
</object>
|
||||||
<int key="IBDocument.localizationMode">0</int>
|
<int key="IBDocument.localizationMode">0</int>
|
||||||
|
@ -383,9 +383,7 @@
|
|||||||
inf(@"Re-activated");
|
inf(@"Re-activated");
|
||||||
[[MPAppDelegate get] checkConfig];
|
[[MPAppDelegate get] checkConfig];
|
||||||
|
|
||||||
if (FBSession.activeSession.state == FBSessionStateCreatedOpening)
|
[FBSession.activeSession handleDidBecomeActive];
|
||||||
// An old Facebook Login session that wasn't finished. Clean it up.
|
|
||||||
[FBSession.activeSession close];
|
|
||||||
|
|
||||||
[[LocalyticsSession sharedLocalyticsSession] resume];
|
[[LocalyticsSession sharedLocalyticsSession] resume];
|
||||||
[[LocalyticsSession sharedLocalyticsSession] upload];
|
[[LocalyticsSession sharedLocalyticsSession] upload];
|
||||||
|
@ -935,8 +935,10 @@
|
|||||||
|
|
||||||
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
|
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
|
||||||
|
|
||||||
return [FBSession openActiveSessionWithPermissions:nil allowLoginUI:allowLoginUI
|
return [FBSession openActiveSessionWithPublishPermissions:nil
|
||||||
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
|
defaultAudience:FBSessionDefaultAudienceEveryone
|
||||||
|
allowLoginUI:YES
|
||||||
|
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
|
||||||
[self sessionStateChanged:session state:state error:error];
|
[self sessionStateChanged:session state:state error:error];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
@interface MPiOSConfig : MPConfig
|
@interface MPiOSConfig : MPConfig
|
||||||
|
|
||||||
@property (nonatomic, retain) NSNumber *sendInfo;
|
|
||||||
@property (nonatomic, retain) NSNumber *helpHidden;
|
@property (nonatomic, retain) NSNumber *helpHidden;
|
||||||
@property (nonatomic, retain) NSNumber *siteInfoHidden;
|
@property (nonatomic, retain) NSNumber *siteInfoHidden;
|
||||||
@property (nonatomic, retain) NSNumber *showQuickStart;
|
@property (nonatomic, retain) NSNumber *showQuickStart;
|
||||||
|
@ -14,8 +14,7 @@
|
|||||||
if (!(self = [super init]))
|
if (!(self = [super init]))
|
||||||
return self;
|
return self;
|
||||||
|
|
||||||
[self.defaults registerDefaults:@{NSStringFromSelector(@selector(sendInfo)): @NO,
|
[self.defaults registerDefaults:@{ NSStringFromSelector(@selector(helpHidden)): @NO,
|
||||||
NSStringFromSelector(@selector(helpHidden)): @NO,
|
|
||||||
NSStringFromSelector(@selector(siteInfoHidden)): @YES,
|
NSStringFromSelector(@selector(siteInfoHidden)): @YES,
|
||||||
NSStringFromSelector(@selector(showQuickStart)): @YES,
|
NSStringFromSelector(@selector(showQuickStart)): @YES,
|
||||||
NSStringFromSelector(@selector(iTunesID)): @"510296984",
|
NSStringFromSelector(@selector(iTunesID)): @"510296984",
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© 2011-2012, Lyndir</string>
|
<string>Copyright © 2011-2013 Lyndir. All rights reserved.</string>
|
||||||
<key>ReplacementFonts</key>
|
<key>ReplacementFonts</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Futura-CondensedExtraBold</key>
|
<key>Futura-CondensedExtraBold</key>
|
||||||
|
@ -18,6 +18,9 @@
|
|||||||
|
|
||||||
#import "TestFlight.h"
|
#import "TestFlight.h"
|
||||||
#import <Crashlytics/Crashlytics.h>
|
#import <Crashlytics/Crashlytics.h>
|
||||||
|
#import "LocalyticsSession.h"
|
||||||
|
#define LOCALYTICS 1
|
||||||
|
#define CRASHLYTICS 1
|
||||||
|
|
||||||
#import "MPTypes.h"
|
#import "MPTypes.h"
|
||||||
#import "MPiOSConfig.h"
|
#import "MPiOSConfig.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user