From b3a0b6a7c0a7faea9e5c9d3219d20564af61e7db Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sun, 21 Sep 2014 10:49:57 -0400 Subject: [PATCH] Element -> Site, site security question answers --- MasterPassword/ObjC/MPAppDelegate_InApp.h | 20 +++++ MasterPassword/ObjC/MPAppDelegate_InApp.m | 81 +++++++++++++++++++ MasterPassword/ObjC/MPGeneratedSiteEntity.h | 18 +++++ MasterPassword/ObjC/MPGeneratedSiteEntity.m | 16 ++++ MasterPassword/ObjC/MPSiteEntity.h | 41 ++++++++++ MasterPassword/ObjC/MPSiteEntity.m | 28 +++++++ MasterPassword/ObjC/MPSiteQuestionEntity.h | 19 +++++ MasterPassword/ObjC/MPSiteQuestionEntity.m | 18 +++++ MasterPassword/ObjC/MPStoredSiteEntity.h | 18 +++++ MasterPassword/ObjC/MPStoredSiteEntity.m | 16 ++++ MasterPassword/ObjC/MPUserEntity.h | 12 +-- MasterPassword/ObjC/MPUserEntity.m | 4 +- .../project.pbxproj | 60 +++++++------- .../MasterPassword 1.xcdatamodel/contents | 6 +- .../MasterPassword 2.xcdatamodel/contents | 6 +- .../MasterPassword 3.xcdatamodel/contents | 6 +- .../MasterPassword 4.xcdatamodel/contents | 6 +- .../MasterPassword 5.xcdatamodel/contents | 24 +++--- .../ObjC/iOS/MPAnswersViewController.h | 36 +++++++++ .../ObjC/iOS/MPAnswersViewController.m | 62 ++++++++++++++ .../project.pbxproj | 60 +++++++------- 21 files changed, 465 insertions(+), 92 deletions(-) create mode 100644 MasterPassword/ObjC/MPAppDelegate_InApp.h create mode 100644 MasterPassword/ObjC/MPAppDelegate_InApp.m create mode 100644 MasterPassword/ObjC/MPGeneratedSiteEntity.h create mode 100644 MasterPassword/ObjC/MPGeneratedSiteEntity.m create mode 100644 MasterPassword/ObjC/MPSiteEntity.h create mode 100644 MasterPassword/ObjC/MPSiteEntity.m create mode 100644 MasterPassword/ObjC/MPSiteQuestionEntity.h create mode 100644 MasterPassword/ObjC/MPSiteQuestionEntity.m create mode 100644 MasterPassword/ObjC/MPStoredSiteEntity.h create mode 100644 MasterPassword/ObjC/MPStoredSiteEntity.m create mode 100644 MasterPassword/ObjC/iOS/MPAnswersViewController.h create mode 100644 MasterPassword/ObjC/iOS/MPAnswersViewController.m diff --git a/MasterPassword/ObjC/MPAppDelegate_InApp.h b/MasterPassword/ObjC/MPAppDelegate_InApp.h new file mode 100644 index 00000000..14340372 --- /dev/null +++ b/MasterPassword/ObjC/MPAppDelegate_InApp.h @@ -0,0 +1,20 @@ +// +// MPAppDelegate_Key.h +// MasterPassword +// +// Created by Maarten Billemont on 24/11/11. +// Copyright (c) 2011 Lyndir. All rights reserved. +// + +#import +#import "MPAppDelegate_Shared.h" + +@interface MPAppDelegate_Shared(InApp) + +@property(nonatomic, strong) NSArray /* SKProduct */ *products; +@property(nonatomic, strong) NSArray /* SKPaymentTransaction */ *paymentTransactions; + +- (void)updateProducts; +- (BOOL)isPurchased:(NSString *)productIdentifier; + +@end diff --git a/MasterPassword/ObjC/MPAppDelegate_InApp.m b/MasterPassword/ObjC/MPAppDelegate_InApp.m new file mode 100644 index 00000000..6caad2e8 --- /dev/null +++ b/MasterPassword/ObjC/MPAppDelegate_InApp.m @@ -0,0 +1,81 @@ +// +// MPAppDelegate.m +// MasterPassword +// +// Created by Maarten Billemont on 24/11/11. +// Copyright (c) 2011 Lyndir. All rights reserved. +// + +#import "MPAppDelegate_InApp.h" + +@implementation MPAppDelegate_Shared(InApp) + +PearlAssociatedObjectProperty( NSArray*, Products, products ); +PearlAssociatedObjectProperty( NSArray*, PaymentTransactions, paymentTransactions ); + +- (void)updateProducts { + + static dispatch_once_t once = 0; + dispatch_once( &once, ^{ + [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; + } ); + + SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers: + [[NSSet alloc] initWithObjects:MPProductGenerateLogins, MPProductAdvancedExport, nil]]; + productsRequest.delegate = self; + [productsRequest start]; +} + +- (BOOL)isPurchased:(NSString *)productIdentifier { + + return [[NSUserDefaults standardUserDefaults] objectForKey:productIdentifier] != nil; +} + +#pragma mark - SKProductsRequestDelegate + +- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { + + inf( @"products: %@, invalid: %@", response.products, response.invalidProductIdentifiers ); + self.products = response.products; +} + +- (void)request:(SKRequest *)request didFailWithError:(NSError *)error { + + err( @"StoreKit request (%@) failed: %@", request, error ); +} + +- (void)requestDidFinish:(SKRequest *)request { + + dbg( @"StoreKit request (%@) finished.", request ); +} + +#pragma mark - SKPaymentTransactionObserver + +- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { + + for (SKPaymentTransaction *transaction in transactions) { + dbg( @"transaction updated: %@", transaction ); + switch (transaction.transactionState) { + case SKPaymentTransactionStatePurchased: + case SKPaymentTransactionStateRestored: { + inf( @"purchased: %@", transaction.payment.productIdentifier ); + [[NSUserDefaults standardUserDefaults] setObject:transaction.transactionIdentifier + forKey:transaction.payment.productIdentifier]; + break; + } + case SKPaymentTransactionStatePurchasing: + case SKPaymentTransactionStateFailed: + case SKPaymentTransactionStateDeferred: + break; + } + } + + self.paymentTransactions = transactions; +} + +- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error { + + err( @"StoreKit restore failed: %@", error ); +} + +@end diff --git a/MasterPassword/ObjC/MPGeneratedSiteEntity.h b/MasterPassword/ObjC/MPGeneratedSiteEntity.h new file mode 100644 index 00000000..af7760be --- /dev/null +++ b/MasterPassword/ObjC/MPGeneratedSiteEntity.h @@ -0,0 +1,18 @@ +// +// MPGeneratedSiteEntity.h +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import +#import +#import "MPSiteEntity.h" + + +@interface MPGeneratedSiteEntity : MPSiteEntity + +@property (nonatomic, retain) NSNumber * counter_; + +@end diff --git a/MasterPassword/ObjC/MPGeneratedSiteEntity.m b/MasterPassword/ObjC/MPGeneratedSiteEntity.m new file mode 100644 index 00000000..0d96650a --- /dev/null +++ b/MasterPassword/ObjC/MPGeneratedSiteEntity.m @@ -0,0 +1,16 @@ +// +// MPGeneratedSiteEntity.m +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import "MPGeneratedSiteEntity.h" + + +@implementation MPGeneratedSiteEntity + +@dynamic counter_; + +@end diff --git a/MasterPassword/ObjC/MPSiteEntity.h b/MasterPassword/ObjC/MPSiteEntity.h new file mode 100644 index 00000000..f938e93b --- /dev/null +++ b/MasterPassword/ObjC/MPSiteEntity.h @@ -0,0 +1,41 @@ +// +// MPSiteEntity.h +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import +#import + +@class MPSiteQuestionEntity, MPUserEntity; + +@interface MPSiteEntity : NSManagedObject + +//@property (nonatomic, retain) id content; // Hide here, reveal in MPStoredSiteEntity +@property (nonatomic, retain) NSDate * lastUsed; +@property (nonatomic, retain) NSNumber * loginGenerated_; +@property (nonatomic, retain) NSString * loginName; +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSNumber * requiresExplicitMigration_; +@property (nonatomic, retain) NSNumber * type_; +@property (nonatomic, retain) NSNumber * uses_; +@property (nonatomic, retain) NSNumber * version_; +@property (nonatomic, retain) NSOrderedSet *questions; +@property (nonatomic, retain) MPUserEntity *user; +@end + +@interface MPSiteEntity (CoreDataGeneratedAccessors) + +- (void)insertObject:(MPSiteQuestionEntity *)value inQuestionsAtIndex:(NSUInteger)idx; +- (void)removeObjectFromQuestionsAtIndex:(NSUInteger)idx; +- (void)insertQuestions:(NSArray *)value atIndexes:(NSIndexSet *)indexes; +- (void)removeQuestionsAtIndexes:(NSIndexSet *)indexes; +- (void)replaceObjectInQuestionsAtIndex:(NSUInteger)idx withObject:(MPSiteQuestionEntity *)value; +- (void)replaceQuestionsAtIndexes:(NSIndexSet *)indexes withQuestions:(NSArray *)values; +- (void)addQuestionsObject:(MPSiteQuestionEntity *)value; +- (void)removeQuestionsObject:(MPSiteQuestionEntity *)value; +- (void)addQuestions:(NSOrderedSet *)values; +- (void)removeQuestions:(NSOrderedSet *)values; +@end diff --git a/MasterPassword/ObjC/MPSiteEntity.m b/MasterPassword/ObjC/MPSiteEntity.m new file mode 100644 index 00000000..3c7b8dba --- /dev/null +++ b/MasterPassword/ObjC/MPSiteEntity.m @@ -0,0 +1,28 @@ +// +// MPSiteEntity.m +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import "MPSiteEntity.h" +#import "MPSiteQuestionEntity.h" +#import "MPUserEntity.h" + + +@implementation MPSiteEntity + +//@dynamic content; +@dynamic lastUsed; +@dynamic loginGenerated_; +@dynamic loginName; +@dynamic name; +@dynamic requiresExplicitMigration_; +@dynamic type_; +@dynamic uses_; +@dynamic version_; +@dynamic questions; +@dynamic user; + +@end diff --git a/MasterPassword/ObjC/MPSiteQuestionEntity.h b/MasterPassword/ObjC/MPSiteQuestionEntity.h new file mode 100644 index 00000000..4232709d --- /dev/null +++ b/MasterPassword/ObjC/MPSiteQuestionEntity.h @@ -0,0 +1,19 @@ +// +// MPSiteQuestionEntity.h +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import +#import + +@class MPSiteEntity; + +@interface MPSiteQuestionEntity : NSManagedObject + +@property (nonatomic, retain) NSString * keyword; +@property (nonatomic, retain) MPSiteEntity *site; + +@end diff --git a/MasterPassword/ObjC/MPSiteQuestionEntity.m b/MasterPassword/ObjC/MPSiteQuestionEntity.m new file mode 100644 index 00000000..6230fd36 --- /dev/null +++ b/MasterPassword/ObjC/MPSiteQuestionEntity.m @@ -0,0 +1,18 @@ +// +// MPSiteQuestionEntity.m +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import "MPSiteQuestionEntity.h" +#import "MPSiteEntity.h" + + +@implementation MPSiteQuestionEntity + +@dynamic keyword; +@dynamic site; + +@end diff --git a/MasterPassword/ObjC/MPStoredSiteEntity.h b/MasterPassword/ObjC/MPStoredSiteEntity.h new file mode 100644 index 00000000..20348ff6 --- /dev/null +++ b/MasterPassword/ObjC/MPStoredSiteEntity.h @@ -0,0 +1,18 @@ +// +// MPStoredSiteEntity.h +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import +#import +#import "MPSiteEntity.h" + + +@interface MPStoredSiteEntity : MPSiteEntity + +@property (nonatomic, retain) id contentObject; + +@end diff --git a/MasterPassword/ObjC/MPStoredSiteEntity.m b/MasterPassword/ObjC/MPStoredSiteEntity.m new file mode 100644 index 00000000..4ff1497e --- /dev/null +++ b/MasterPassword/ObjC/MPStoredSiteEntity.m @@ -0,0 +1,16 @@ +// +// MPStoredSiteEntity.m +// MasterPassword-Mac +// +// Created by Maarten Billemont on 2014-09-21. +// Copyright (c) 2014 Lyndir. All rights reserved. +// + +#import "MPStoredSiteEntity.h" + + +@implementation MPStoredSiteEntity + +@dynamic contentObject; + +@end diff --git a/MasterPassword/ObjC/MPUserEntity.h b/MasterPassword/ObjC/MPUserEntity.h index c6dcf73f..eb615712 100644 --- a/MasterPassword/ObjC/MPUserEntity.h +++ b/MasterPassword/ObjC/MPUserEntity.h @@ -1,6 +1,6 @@ // // MPUserEntity.h -// MasterPassword-iOS +// MasterPassword-Mac // // Created by Maarten Billemont on 2014-09-21. // Copyright (c) 2014 Lyndir. All rights reserved. @@ -19,14 +19,14 @@ @property (nonatomic, retain) NSDate * lastUsed; @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) NSNumber * saveKey_; -@property (nonatomic, retain) NSSet *elements; +@property (nonatomic, retain) NSSet *sites; @end @interface MPUserEntity (CoreDataGeneratedAccessors) -- (void)addElementsObject:(MPSiteEntity *)value; -- (void)removeElementsObject:(MPSiteEntity *)value; -- (void)addElements:(NSSet *)values; -- (void)removeElements:(NSSet *)values; +- (void)addSitesObject:(MPSiteEntity *)value; +- (void)removeSitesObject:(MPSiteEntity *)value; +- (void)addSites:(NSSet *)values; +- (void)removeSites:(NSSet *)values; @end diff --git a/MasterPassword/ObjC/MPUserEntity.m b/MasterPassword/ObjC/MPUserEntity.m index 648143bd..da97fdcc 100644 --- a/MasterPassword/ObjC/MPUserEntity.m +++ b/MasterPassword/ObjC/MPUserEntity.m @@ -1,6 +1,6 @@ // // MPUserEntity.m -// MasterPassword-iOS +// MasterPassword-Mac // // Created by Maarten Billemont on 2014-09-21. // Copyright (c) 2014 Lyndir. All rights reserved. @@ -18,6 +18,6 @@ @dynamic lastUsed; @dynamic name; @dynamic saveKey_; -@dynamic elements; +@dynamic sites; @end diff --git a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj index 7be2d832..e05ed5dc 100644 --- a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj @@ -43,6 +43,11 @@ DA30E9D215722EE500A68B4C /* Pearl-Crypto.m in Sources */ = {isa = PBXBuildFile; fileRef = DA30E9D115722EE500A68B4C /* Pearl-Crypto.m */; }; DA30E9D715723E6900A68B4C /* PearlLazy.h in Headers */ = {isa = PBXBuildFile; fileRef = DA30E9D515723E6900A68B4C /* PearlLazy.h */; }; DA30E9D815723E6900A68B4C /* PearlLazy.m in Sources */ = {isa = PBXBuildFile; fileRef = DA30E9D615723E6900A68B4C /* PearlLazy.m */; }; + DA32CFD919CF1C70004F3F0E /* MPGeneratedSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFD819CF1C70004F3F0E /* MPGeneratedSiteEntity.m */; }; + DA32CFDC19CF1C70004F3F0E /* MPStoredSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFDB19CF1C70004F3F0E /* MPStoredSiteEntity.m */; }; + DA32CFDF19CF1C70004F3F0E /* MPSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFDE19CF1C70004F3F0E /* MPSiteEntity.m */; }; + DA32CFE219CF1C71004F3F0E /* MPSiteQuestionEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFE119CF1C71004F3F0E /* MPSiteQuestionEntity.m */; }; + DA32CFE519CF1C71004F3F0E /* MPUserEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFE419CF1C71004F3F0E /* MPUserEntity.m */; }; DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; }; DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; }; DA3B844F190FC60900246EEA /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA3B844A190FC5A900246EEA /* Crashlytics.framework */; }; @@ -62,7 +67,6 @@ DA5E5CFC1724A667003798D8 /* MPConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CA41724A667003798D8 /* MPConfig.m */; }; DA5E5D001724A667003798D8 /* MPEntities.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CAC1724A667003798D8 /* MPEntities.m */; }; DA5E5D011724A667003798D8 /* MPKey.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CAE1724A667003798D8 /* MPKey.m */; }; - DA5E5D021724A667003798D8 /* MPUserEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CB11724A667003798D8 /* MPUserEntity.m */; }; DA5E5D031724A667003798D8 /* MPMacAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CB41724A667003798D8 /* MPMacAppDelegate.m */; }; DA5E5D041724A667003798D8 /* MPMacConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CB61724A667003798D8 /* MPMacConfig.m */; }; DA5E5D081724A667003798D8 /* MasterPassword.entitlements in Resources */ = {isa = PBXBuildFile; fileRef = DA5E5CBF1724A667003798D8 /* MasterPassword.entitlements */; }; @@ -75,10 +79,6 @@ DA8ED895192906920099B726 /* PearlTween.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8ED891192906920099B726 /* PearlTween.m */; }; DA8ED896192906920099B726 /* PearlTween.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8ED892192906920099B726 /* PearlTween.h */; }; DA8ED897192906920099B726 /* map-macro.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8ED894192906920099B726 /* map-macro.h */; }; - DA9521BD19CEA3FD002E3AD5 /* MPSiteStoredEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521B519CEA3FD002E3AD5 /* MPSiteStoredEntity.m */; }; - DA9521BE19CEA3FD002E3AD5 /* MPSiteQuestion.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521B719CEA3FD002E3AD5 /* MPSiteQuestion.m */; }; - DA9521BF19CEA3FD002E3AD5 /* MPSiteGeneratedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521B919CEA3FD002E3AD5 /* MPSiteGeneratedEntity.m */; }; - DA9521C019CEA3FD002E3AD5 /* MPSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521BB19CEA3FD002E3AD5 /* MPSiteEntity.m */; }; DAAA81B0195A8D1300FA30D9 /* gradient.png in Resources */ = {isa = PBXBuildFile; fileRef = DAAA81AF195A8D1300FA30D9 /* gradient.png */; }; DABC6C02175D8C85000C15D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; }; DABC6C15175D8CE1000C15D4 /* RHStatusItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = DABC6C14175D8CE1000C15D4 /* RHStatusItemView.m */; }; @@ -275,6 +275,16 @@ DA30E9D115722EE500A68B4C /* Pearl-Crypto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Pearl-Crypto.m"; sourceTree = ""; }; DA30E9D515723E6900A68B4C /* PearlLazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlLazy.h; sourceTree = ""; }; DA30E9D615723E6900A68B4C /* PearlLazy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlLazy.m; sourceTree = ""; }; + DA32CFD719CF1C70004F3F0E /* MPGeneratedSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPGeneratedSiteEntity.h; sourceTree = ""; }; + DA32CFD819CF1C70004F3F0E /* MPGeneratedSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPGeneratedSiteEntity.m; sourceTree = ""; }; + DA32CFDA19CF1C70004F3F0E /* MPStoredSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStoredSiteEntity.h; sourceTree = ""; }; + DA32CFDB19CF1C70004F3F0E /* MPStoredSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStoredSiteEntity.m; sourceTree = ""; }; + DA32CFDD19CF1C70004F3F0E /* MPSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteEntity.h; sourceTree = ""; }; + DA32CFDE19CF1C70004F3F0E /* MPSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteEntity.m; sourceTree = ""; }; + DA32CFE019CF1C71004F3F0E /* MPSiteQuestionEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteQuestionEntity.h; sourceTree = ""; }; + DA32CFE119CF1C71004F3F0E /* MPSiteQuestionEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteQuestionEntity.m; sourceTree = ""; }; + DA32CFE319CF1C71004F3F0E /* MPUserEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPUserEntity.h; sourceTree = ""; }; + DA32CFE419CF1C71004F3F0E /* MPUserEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPUserEntity.m; sourceTree = ""; }; DA3509FC15F101A500C14A8E /* PearlQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlQueue.h; sourceTree = ""; }; DA3509FD15F101A500C14A8E /* PearlQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlQueue.m; sourceTree = ""; }; DA3B844A190FC5A900246EEA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Crashlytics.framework; sourceTree = ""; }; @@ -308,8 +318,6 @@ DA5E5CAD1724A667003798D8 /* MPKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPKey.h; sourceTree = ""; }; DA5E5CAE1724A667003798D8 /* MPKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPKey.m; sourceTree = ""; }; DA5E5CAF1724A667003798D8 /* MPTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTypes.h; sourceTree = ""; }; - DA5E5CB01724A667003798D8 /* MPUserEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPUserEntity.h; sourceTree = ""; }; - DA5E5CB11724A667003798D8 /* MPUserEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPUserEntity.m; sourceTree = ""; }; DA5E5CB31724A667003798D8 /* MPMacAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPMacAppDelegate.h; sourceTree = ""; }; DA5E5CB41724A667003798D8 /* MPMacAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPMacAppDelegate.m; sourceTree = ""; }; DA5E5CB51724A667003798D8 /* MPMacConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPMacConfig.h; sourceTree = ""; }; @@ -729,14 +737,6 @@ DA8ED891192906920099B726 /* PearlTween.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlTween.m; sourceTree = ""; }; DA8ED892192906920099B726 /* PearlTween.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlTween.h; sourceTree = ""; }; DA8ED894192906920099B726 /* map-macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "map-macro.h"; sourceTree = ""; }; - DA9521B519CEA3FD002E3AD5 /* MPSiteStoredEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteStoredEntity.m; sourceTree = ""; }; - DA9521B619CEA3FD002E3AD5 /* MPSiteStoredEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteStoredEntity.h; sourceTree = ""; }; - DA9521B719CEA3FD002E3AD5 /* MPSiteQuestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteQuestion.m; sourceTree = ""; }; - DA9521B819CEA3FD002E3AD5 /* MPSiteQuestion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteQuestion.h; sourceTree = ""; }; - DA9521B919CEA3FD002E3AD5 /* MPSiteGeneratedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteGeneratedEntity.m; sourceTree = ""; }; - DA9521BA19CEA3FD002E3AD5 /* MPSiteGeneratedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteGeneratedEntity.h; sourceTree = ""; }; - DA9521BB19CEA3FD002E3AD5 /* MPSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteEntity.m; sourceTree = ""; }; - DA9521BC19CEA3FD002E3AD5 /* MPSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteEntity.h; sourceTree = ""; }; DAAA81AF195A8D1300FA30D9 /* gradient.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gradient.png; sourceTree = ""; }; DABB981515100B4000B05417 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; DABC6C01175D8C85000C15D4 /* libRHStatusItemView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRHStatusItemView.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -998,14 +998,16 @@ DA5E5C961724A667003798D8 /* ObjC */ = { isa = PBXGroup; children = ( - DA9521B519CEA3FD002E3AD5 /* MPSiteStoredEntity.m */, - DA9521B619CEA3FD002E3AD5 /* MPSiteStoredEntity.h */, - DA9521B719CEA3FD002E3AD5 /* MPSiteQuestion.m */, - DA9521B819CEA3FD002E3AD5 /* MPSiteQuestion.h */, - DA9521B919CEA3FD002E3AD5 /* MPSiteGeneratedEntity.m */, - DA9521BA19CEA3FD002E3AD5 /* MPSiteGeneratedEntity.h */, - DA9521BB19CEA3FD002E3AD5 /* MPSiteEntity.m */, - DA9521BC19CEA3FD002E3AD5 /* MPSiteEntity.h */, + DA32CFE319CF1C71004F3F0E /* MPUserEntity.h */, + DA32CFE419CF1C71004F3F0E /* MPUserEntity.m */, + DA32CFE019CF1C71004F3F0E /* MPSiteQuestionEntity.h */, + DA32CFE119CF1C71004F3F0E /* MPSiteQuestionEntity.m */, + DA32CFDD19CF1C70004F3F0E /* MPSiteEntity.h */, + DA32CFDE19CF1C70004F3F0E /* MPSiteEntity.m */, + DA32CFDA19CF1C70004F3F0E /* MPStoredSiteEntity.h */, + DA32CFDB19CF1C70004F3F0E /* MPStoredSiteEntity.m */, + DA32CFD719CF1C70004F3F0E /* MPGeneratedSiteEntity.h */, + DA32CFD819CF1C70004F3F0E /* MPGeneratedSiteEntity.m */, DA3B8454190FC89700246EEA /* MPFixable.m */, DA3B8455190FC89700246EEA /* MPFixable.h */, DA5E5CB21724A667003798D8 /* Mac */, @@ -1028,8 +1030,6 @@ DA5E5CAD1724A667003798D8 /* MPKey.h */, DA5E5CAE1724A667003798D8 /* MPKey.m */, DA5E5CAF1724A667003798D8 /* MPTypes.h */, - DA5E5CB01724A667003798D8 /* MPUserEntity.h */, - DA5E5CB11724A667003798D8 /* MPUserEntity.m */, DA29992619C6A89900AF7DF1 /* MasterPassword.xcdatamodeld */, ); name = ObjC; @@ -2142,11 +2142,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DA9521BF19CEA3FD002E3AD5 /* MPSiteGeneratedEntity.m in Sources */, DA5E5CF61724A667003798D8 /* MPAlgorithm.m in Sources */, + DA32CFE219CF1C71004F3F0E /* MPSiteQuestionEntity.m in Sources */, + DA32CFE519CF1C71004F3F0E /* MPUserEntity.m in Sources */, DA5E5CF71724A667003798D8 /* MPAlgorithmV0.m in Sources */, DA5E5CF81724A667003798D8 /* MPAlgorithmV1.m in Sources */, - DA9521BE19CEA3FD002E3AD5 /* MPSiteQuestion.m in Sources */, DA5E5CF91724A667003798D8 /* MPAppDelegate_Key.m in Sources */, DA5E5CFA1724A667003798D8 /* MPAppDelegate_Shared.m in Sources */, DA5E5CFB1724A667003798D8 /* MPAppDelegate_Store.m in Sources */, @@ -2155,16 +2155,16 @@ DA3B8456190FC89700246EEA /* MPFixable.m in Sources */, DA5E5D001724A667003798D8 /* MPEntities.m in Sources */, DA5E5D011724A667003798D8 /* MPKey.m in Sources */, - DA5E5D021724A667003798D8 /* MPUserEntity.m in Sources */, - DA9521BD19CEA3FD002E3AD5 /* MPSiteStoredEntity.m in Sources */, + DA32CFDC19CF1C70004F3F0E /* MPStoredSiteEntity.m in Sources */, DA5E5D031724A667003798D8 /* MPMacAppDelegate.m in Sources */, - DA9521C019CEA3FD002E3AD5 /* MPSiteEntity.m in Sources */, DA5E5D041724A667003798D8 /* MPMacConfig.m in Sources */, DA5E5D0C1724A667003798D8 /* main.m in Sources */, 93D39C5789EFA607CF788082 /* MPElementModel.m in Sources */, 93D39F833DEC1C89B2F795AC /* MPPasswordWindowController.m in Sources */, + DA32CFD919CF1C70004F3F0E /* MPGeneratedSiteEntity.m in Sources */, 93D390C676DF52DA7E459F19 /* MPPasswordWindow.m in Sources */, 93D39784E725A34D1EE3FB3B /* MPInitialWindowController.m in Sources */, + DA32CFDF19CF1C70004F3F0E /* MPSiteEntity.m in Sources */, 93D394C4254EEB45FB335AFB /* MPElementsTableView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 1.xcdatamodel/contents b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 1.xcdatamodel/contents index d658e9c9..da55f5dc 100644 --- a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 1.xcdatamodel/contents +++ b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 1.xcdatamodel/contents @@ -6,7 +6,7 @@ - + @@ -14,7 +14,7 @@ - + @@ -31,4 +31,4 @@ - + \ No newline at end of file diff --git a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 2.xcdatamodel/contents b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 2.xcdatamodel/contents index 2bbf7241..1da4faef 100644 --- a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 2.xcdatamodel/contents +++ b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 2.xcdatamodel/contents @@ -11,7 +11,7 @@ - + @@ -19,7 +19,7 @@ - + @@ -37,4 +37,4 @@ - + \ No newline at end of file diff --git a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 3.xcdatamodel/contents b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 3.xcdatamodel/contents index 955e7b14..ad4711c0 100644 --- a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 3.xcdatamodel/contents +++ b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 3.xcdatamodel/contents @@ -11,7 +11,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -37,4 +37,4 @@ - + \ No newline at end of file diff --git a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 4.xcdatamodel/contents b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 4.xcdatamodel/contents index a9229e2e..a7432960 100644 --- a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 4.xcdatamodel/contents +++ b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 4.xcdatamodel/contents @@ -11,7 +11,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -36,4 +36,4 @@ - + \ No newline at end of file diff --git a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 5.xcdatamodel/contents b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 5.xcdatamodel/contents index e01c12a6..1ebadc80 100644 --- a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 5.xcdatamodel/contents +++ b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/MasterPassword 5.xcdatamodel/contents @@ -1,5 +1,8 @@ + + + @@ -12,17 +15,14 @@ - - + + - - - - + - + @@ -34,13 +34,13 @@ - + - - - + + + - + \ No newline at end of file diff --git a/MasterPassword/ObjC/iOS/MPAnswersViewController.h b/MasterPassword/ObjC/iOS/MPAnswersViewController.h new file mode 100644 index 00000000..1292122e --- /dev/null +++ b/MasterPassword/ObjC/iOS/MPAnswersViewController.h @@ -0,0 +1,36 @@ +// +// MPPreferencesViewController.h +// MasterPassword-iOS +// +// Created by Maarten Billemont on 04/06/12. +// Copyright (c) 2012 Lyndir. All rights reserved. +// + +#import +#import "MPTypeViewController.h" + +@interface MPAnswersViewController : UITableViewController + +@end + +@interface MPGlobalAnswersCell : UITableViewCell + +@property (nonatomic) IBOutlet UILabel *titleLabel; +@property (nonatomic) IBOutlet UITextField *answerField; + +@end + +@interface MPSendAnswersCell : UITableViewCell + +@end + +@interface MPMultipleAnswersCell : UITableViewCell + +@end + +@interface MPAnswersQuestionCell : UITableViewCell + +@property(nonatomic) IBOutlet UITextField *questionField; +@property(nonatomic) IBOutlet UITextField *answerField; + +@end diff --git a/MasterPassword/ObjC/iOS/MPAnswersViewController.m b/MasterPassword/ObjC/iOS/MPAnswersViewController.m new file mode 100644 index 00000000..f93b1f48 --- /dev/null +++ b/MasterPassword/ObjC/iOS/MPAnswersViewController.m @@ -0,0 +1,62 @@ +// +// MPPreferencesViewController.m +// MasterPassword-iOS +// +// Created by Maarten Billemont on 04/06/12. +// Copyright (c) 2012 Lyndir. All rights reserved. +// + +#import "MPAnswersViewController.h" +#import "MPiOSAppDelegate.h" +#import "MPAppDelegate_Key.h" +#import "MPAppDelegate_Store.h" +#import "UIColor+Expanded.h" +#import "MPPasswordsViewController.h" +#import "MPCoachmarkViewController.h" + +@interface MPAnswersViewController() + +@end + +@implementation MPAnswersViewController + +#pragma mark - UITableViewDelegate + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + if (indexPath.item == 0) + return [MPGlobalAnswersCell dequeueCellFromTableView:tableView indexPath:indexPath]; + if (indexPath.item == 1) + return [MPSendAnswersCell dequeueCellFromTableView:tableView indexPath:indexPath]; + if (indexPath.item == 2) + return [MPMultipleAnswersCell dequeueCellFromTableView:tableView indexPath:indexPath]; + + MPAnswersQuestionCell *cell = [MPAnswersQuestionCell dequeueCellFromTableView:tableView indexPath:indexPath]; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + + UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; + + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +@end + +@implementation MPGlobalAnswersCell : UITableViewCell + +@end + +@implementation MPSendAnswersCell : UITableViewCell + +@end + +@implementation MPMultipleAnswersCell : UITableViewCell + +@end + +@implementation MPAnswersQuestionCell : UITableViewCell + +@end diff --git a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj index a0bc8483..85752da2 100644 --- a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj @@ -111,6 +111,11 @@ DA30E9D415722EF400A68B4C /* Pearl-UIKit.m in Sources */ = {isa = PBXBuildFile; fileRef = DA30E9D315722EF400A68B4C /* Pearl-UIKit.m */; }; DA30E9D715723E6900A68B4C /* PearlLazy.h in Headers */ = {isa = PBXBuildFile; fileRef = DA30E9D515723E6900A68B4C /* PearlLazy.h */; }; DA30E9D815723E6900A68B4C /* PearlLazy.m in Sources */ = {isa = PBXBuildFile; fileRef = DA30E9D615723E6900A68B4C /* PearlLazy.m */; }; + DA32CFF019CF1C8F004F3F0E /* MPUserEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFE619CF1C8F004F3F0E /* MPUserEntity.m */; }; + DA32CFF119CF1C8F004F3F0E /* MPStoredSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFE819CF1C8F004F3F0E /* MPStoredSiteEntity.m */; }; + DA32CFF219CF1C8F004F3F0E /* MPSiteQuestionEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFEA19CF1C8F004F3F0E /* MPSiteQuestionEntity.m */; }; + DA32CFF319CF1C8F004F3F0E /* MPSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFEC19CF1C8F004F3F0E /* MPSiteEntity.m */; }; + DA32CFF419CF1C8F004F3F0E /* MPGeneratedSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA32CFEE19CF1C8F004F3F0E /* MPGeneratedSiteEntity.m */; }; DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; }; DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; }; DA38D6A318CCB5BF009AEB3E /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA38D6A218CCB5BF009AEB3E /* Storyboard.storyboard */; }; @@ -158,11 +163,6 @@ DA854C8318D4CFBF00106317 /* avatar-add@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA854C8118D4CFBF00106317 /* avatar-add@2x.png */; }; DA854C8418D4CFBF00106317 /* avatar-add.png in Resources */ = {isa = PBXBuildFile; fileRef = DA854C8218D4CFBF00106317 /* avatar-add.png */; }; DA945C8717E3F3FD0053236B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA945C8617E3F3FD0053236B /* Images.xcassets */; }; - DA9521A819CEA3DE002E3AD5 /* MPSiteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521A719CEA3DE002E3AD5 /* MPSiteEntity.m */; }; - DA9521AB19CEA3DE002E3AD5 /* MPSiteQuestion.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521AA19CEA3DE002E3AD5 /* MPSiteQuestion.m */; }; - DA9521AE19CEA3DE002E3AD5 /* MPSiteStoredEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521AD19CEA3DE002E3AD5 /* MPSiteStoredEntity.m */; }; - DA9521B119CEA3DE002E3AD5 /* MPUserEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521B019CEA3DE002E3AD5 /* MPUserEntity.m */; }; - DA9521B419CEA3DE002E3AD5 /* MPSiteGeneratedEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9521B319CEA3DE002E3AD5 /* MPSiteGeneratedEntity.m */; }; DA95D5F214DF0B2C008D1B94 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA95D5F014DF0B1E008D1B94 /* MessageUI.framework */; }; DAA141201922FF020032B392 /* PearlTween.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA1411C1922FF020032B392 /* PearlTween.m */; }; DAA141211922FF020032B392 /* PearlTween.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA1411D1922FF020032B392 /* PearlTween.h */; }; @@ -508,6 +508,16 @@ DA30E9D315722EF400A68B4C /* Pearl-UIKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Pearl-UIKit.m"; sourceTree = ""; }; DA30E9D515723E6900A68B4C /* PearlLazy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlLazy.h; sourceTree = ""; }; DA30E9D615723E6900A68B4C /* PearlLazy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlLazy.m; sourceTree = ""; }; + DA32CFE619CF1C8F004F3F0E /* MPUserEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPUserEntity.m; sourceTree = ""; }; + DA32CFE719CF1C8F004F3F0E /* MPUserEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPUserEntity.h; sourceTree = ""; }; + DA32CFE819CF1C8F004F3F0E /* MPStoredSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStoredSiteEntity.m; sourceTree = ""; }; + DA32CFE919CF1C8F004F3F0E /* MPStoredSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStoredSiteEntity.h; sourceTree = ""; }; + DA32CFEA19CF1C8F004F3F0E /* MPSiteQuestionEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteQuestionEntity.m; sourceTree = ""; }; + DA32CFEB19CF1C8F004F3F0E /* MPSiteQuestionEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteQuestionEntity.h; sourceTree = ""; }; + DA32CFEC19CF1C8F004F3F0E /* MPSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteEntity.m; sourceTree = ""; }; + DA32CFED19CF1C8F004F3F0E /* MPSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteEntity.h; sourceTree = ""; }; + DA32CFEE19CF1C8F004F3F0E /* MPGeneratedSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPGeneratedSiteEntity.m; sourceTree = ""; }; + DA32CFEF19CF1C8F004F3F0E /* MPGeneratedSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPGeneratedSiteEntity.h; sourceTree = ""; }; DA3509FC15F101A500C14A8E /* PearlQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlQueue.h; sourceTree = ""; }; DA3509FD15F101A500C14A8E /* PearlQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlQueue.m; sourceTree = ""; }; DA38D6A218CCB5BF009AEB3E /* Storyboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Storyboard.storyboard; sourceTree = ""; }; @@ -538,16 +548,6 @@ DA854C8118D4CFBF00106317 /* avatar-add@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "avatar-add@2x.png"; sourceTree = ""; }; DA854C8218D4CFBF00106317 /* avatar-add.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "avatar-add.png"; sourceTree = ""; }; DA945C8617E3F3FD0053236B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - DA9521A619CEA3DE002E3AD5 /* MPSiteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteEntity.h; sourceTree = ""; }; - DA9521A719CEA3DE002E3AD5 /* MPSiteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteEntity.m; sourceTree = ""; }; - DA9521A919CEA3DE002E3AD5 /* MPSiteQuestion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteQuestion.h; sourceTree = ""; }; - DA9521AA19CEA3DE002E3AD5 /* MPSiteQuestion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteQuestion.m; sourceTree = ""; }; - DA9521AC19CEA3DE002E3AD5 /* MPSiteStoredEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteStoredEntity.h; sourceTree = ""; }; - DA9521AD19CEA3DE002E3AD5 /* MPSiteStoredEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteStoredEntity.m; sourceTree = ""; }; - DA9521AF19CEA3DE002E3AD5 /* MPUserEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPUserEntity.h; sourceTree = ""; }; - DA9521B019CEA3DE002E3AD5 /* MPUserEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPUserEntity.m; sourceTree = ""; }; - DA9521B219CEA3DE002E3AD5 /* MPSiteGeneratedEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSiteGeneratedEntity.h; sourceTree = ""; }; - DA9521B319CEA3DE002E3AD5 /* MPSiteGeneratedEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSiteGeneratedEntity.m; sourceTree = ""; }; DA95D5F014DF0B1E008D1B94 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; DAA141191922FED80032B392 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Crashlytics.framework; sourceTree = ""; }; DAA1411C1922FF020032B392 /* PearlTween.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlTween.m; sourceTree = ""; }; @@ -2269,6 +2269,16 @@ DABD3B9F1711E2DB00CF925C /* ObjC */ = { isa = PBXGroup; children = ( + DA32CFE619CF1C8F004F3F0E /* MPUserEntity.m */, + DA32CFE719CF1C8F004F3F0E /* MPUserEntity.h */, + DA32CFE819CF1C8F004F3F0E /* MPStoredSiteEntity.m */, + DA32CFE919CF1C8F004F3F0E /* MPStoredSiteEntity.h */, + DA32CFEA19CF1C8F004F3F0E /* MPSiteQuestionEntity.m */, + DA32CFEB19CF1C8F004F3F0E /* MPSiteQuestionEntity.h */, + DA32CFEC19CF1C8F004F3F0E /* MPSiteEntity.m */, + DA32CFED19CF1C8F004F3F0E /* MPSiteEntity.h */, + DA32CFEE19CF1C8F004F3F0E /* MPGeneratedSiteEntity.m */, + DA32CFEF19CF1C8F004F3F0E /* MPGeneratedSiteEntity.h */, DABD3BD71711E2DC00CF925C /* iOS */, DABD3BA01711E2DC00CF925C /* MPAlgorithm.h */, DABD3BA11711E2DC00CF925C /* MPAlgorithm.m */, @@ -2290,16 +2300,6 @@ DABD3BB71711E2DC00CF925C /* MPKey.m */, DABD3BB81711E2DC00CF925C /* MPTypes.h */, DABD3BD01711E2DC00CF925C /* MasterPassword.xcdatamodeld */, - DA9521AC19CEA3DE002E3AD5 /* MPSiteStoredEntity.h */, - DA9521AF19CEA3DE002E3AD5 /* MPUserEntity.h */, - DA9521B019CEA3DE002E3AD5 /* MPUserEntity.m */, - DA9521AD19CEA3DE002E3AD5 /* MPSiteStoredEntity.m */, - DA9521B219CEA3DE002E3AD5 /* MPSiteGeneratedEntity.h */, - DA9521B319CEA3DE002E3AD5 /* MPSiteGeneratedEntity.m */, - DA9521A919CEA3DE002E3AD5 /* MPSiteQuestion.h */, - DA9521AA19CEA3DE002E3AD5 /* MPSiteQuestion.m */, - DA9521A619CEA3DE002E3AD5 /* MPSiteEntity.h */, - DA9521A719CEA3DE002E3AD5 /* MPSiteEntity.m */, 93D399F244BB522A317811BB /* MPFixable.h */, 93D39A813CA9D7E192261ED2 /* MPFixable.m */, 93D394C78C7B879C9AD9152C /* MPAppDelegate_InApp.m */, @@ -3219,22 +3219,22 @@ DABD3C021711E2DC00CF925C /* MPAppDelegate_Store.m in Sources */, DABD3C031711E2DC00CF925C /* MPConfig.m in Sources */, DABD3C071711E2DC00CF925C /* MPEntities.m in Sources */, + DA32CFF319CF1C8F004F3F0E /* MPSiteEntity.m in Sources */, DABD3C081711E2DC00CF925C /* MPKey.m in Sources */, DABD3C141711E2DC00CF925C /* MasterPassword.xcdatamodeld in Sources */, DABD3C151711E2DC00CF925C /* MPiOSAppDelegate.m in Sources */, - DA9521A819CEA3DE002E3AD5 /* MPSiteEntity.m in Sources */, DABD3C1C1711E2DC00CF925C /* MPGuideViewController.m in Sources */, DABD3C1E1711E2DC00CF925C /* MPPreferencesViewController.m in Sources */, DABD3C1F1711E2DC00CF925C /* MPTypeViewController.m in Sources */, DABD3C211711E2DC00CF925C /* MPiOSConfig.m in Sources */, DABD3C271711E2DC00CF925C /* main.m in Sources */, 93D39F8A9254177891F38705 /* MPSetupViewController.m in Sources */, - DA9521AE19CEA3DE002E3AD5 /* MPSiteStoredEntity.m in Sources */, + DA32CFF219CF1C8F004F3F0E /* MPSiteQuestionEntity.m in Sources */, DA095E75172F4CD8001C948B /* MPLogsViewController.m in Sources */, 93D39D596A2E376D6F6F5DA1 /* MPCombinedViewController.m in Sources */, + DA32CFF419CF1C8F004F3F0E /* MPGeneratedSiteEntity.m in Sources */, 93D3957237D303DE2D38C267 /* MPAvatarCell.m in Sources */, 93D39B8F90F58A5D158DDBA3 /* MPPasswordsViewController.m in Sources */, - DA9521B419CEA3DE002E3AD5 /* MPSiteGeneratedEntity.m in Sources */, 93D3954FCE045A3CC7E804B7 /* MPUsersViewController.m in Sources */, 93D39392DEDA376F93C6C718 /* MPCell.m in Sources */, 93D39A5FF670957C0AF8298D /* MPPasswordCell.m in Sources */, @@ -3245,11 +3245,11 @@ 93D39BA1EA3CAAC8A220B4A6 /* MPAppSettingsViewController.m in Sources */, 93D396D8B67DA6522CDBA142 /* MPCoachmarkViewController.m in Sources */, 93D39EAA4D064193074D3021 /* MPFixable.m in Sources */, + DA32CFF119CF1C8F004F3F0E /* MPStoredSiteEntity.m in Sources */, 93D394982CBD25D46692DD7C /* MPWebViewController.m in Sources */, - DA9521B119CEA3DE002E3AD5 /* MPUserEntity.m in Sources */, 93D39D8F78978196D6ABDEDE /* MPNavigationController.m in Sources */, 93D3939661CE37180AF7CD6A /* MPStoreViewController.m in Sources */, - DA9521AB19CEA3DE002E3AD5 /* MPSiteQuestion.m in Sources */, + DA32CFF019CF1C8F004F3F0E /* MPUserEntity.m in Sources */, 93D39D38356F59DBEF934D70 /* MPAppDelegate_InApp.m in Sources */, 93D390C1B93F9D3AE37DD0A5 /* MPAnswersViewController.m in Sources */, );