You've already forked FinalYearProject-MyMind
mirror of
https://github.com/MrLyallCSIT/FinalYearProject-MyMind.git
synced 2026-01-18 07:09:41 +00:00
Creation of Test Plan and FYP Report
This commit is contained in:
@@ -1 +0,0 @@
|
||||
github "ortuman/SwiftForms"
|
||||
@@ -1 +0,0 @@
|
||||
github "ortuman/SwiftForms" "1.7"
|
||||
19
My Mind/Carthage/Build/.SwiftForms.version
generated
vendored
19
My Mind/Carthage/Build/.SwiftForms.version
generated
vendored
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"commitish" : "1.7",
|
||||
"iOS" : [
|
||||
{
|
||||
"hash" : "045deef96b266613799a0dd27287607b12f5b43daede54ba2359c759cd9cb0f5",
|
||||
"name" : "SwiftForms"
|
||||
}
|
||||
],
|
||||
"xcodeVersion" : "Xcode 8.3\nBuild version 8E162",
|
||||
"watchOS" : [
|
||||
|
||||
],
|
||||
"tvOS" : [
|
||||
|
||||
],
|
||||
"Mac" : [
|
||||
|
||||
]
|
||||
}
|
||||
1908
My Mind/Carthage/Build/iOS/16344ACE-31D7-3149-8D5B-49B11957E0F6.bcsymbolmap
generated
vendored
1908
My Mind/Carthage/Build/iOS/16344ACE-31D7-3149-8D5B-49B11957E0F6.bcsymbolmap
generated
vendored
File diff suppressed because one or more lines are too long
1986
My Mind/Carthage/Build/iOS/B36DDE95-FE71-3754-AC74-7C3867BCEBFC.bcsymbolmap
generated
vendored
1986
My Mind/Carthage/Build/iOS/B36DDE95-FE71-3754-AC74-7C3867BCEBFC.bcsymbolmap
generated
vendored
File diff suppressed because one or more lines are too long
20
My Mind/Carthage/Build/iOS/SwiftForms.framework.dSYM/Contents/Info.plist
generated
vendored
20
My Mind/Carthage/Build/iOS/SwiftForms.framework.dSYM/Contents/Info.plist
generated
vendored
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.xcode.dsym.com.ortulabs.SwiftForms</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>dSYM</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.6.2</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework.dSYM/Contents/Resources/DWARF/SwiftForms
generated
vendored
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework.dSYM/Contents/Resources/DWARF/SwiftForms
generated
vendored
Binary file not shown.
380
My Mind/Carthage/Build/iOS/SwiftForms.framework/Headers/SwiftForms-Swift.h
generated
vendored
380
My Mind/Carthage/Build/iOS/SwiftForms.framework/Headers/SwiftForms-Swift.h
generated
vendored
@@ -1,380 +0,0 @@
|
||||
// Generated by Apple Swift version 3.1 (swiftlang-802.0.48 clang-802.0.38)
|
||||
#pragma clang diagnostic push
|
||||
|
||||
#if defined(__has_include) && __has_include(<swift/objc-prologue.h>)
|
||||
# include <swift/objc-prologue.h>
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wauto-import"
|
||||
#include <objc/NSObject.h>
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#if !defined(SWIFT_TYPEDEFS)
|
||||
# define SWIFT_TYPEDEFS 1
|
||||
# if defined(__has_include) && __has_include(<uchar.h>)
|
||||
# include <uchar.h>
|
||||
# elif !defined(__cplusplus) || __cplusplus < 201103L
|
||||
typedef uint_least16_t char16_t;
|
||||
typedef uint_least32_t char32_t;
|
||||
# endif
|
||||
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_PASTE)
|
||||
# define SWIFT_PASTE_HELPER(x, y) x##y
|
||||
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
|
||||
#endif
|
||||
#if !defined(SWIFT_METATYPE)
|
||||
# define SWIFT_METATYPE(X) Class
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_PROPERTY)
|
||||
# if __has_feature(objc_class_property)
|
||||
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
|
||||
# else
|
||||
# define SWIFT_CLASS_PROPERTY(...)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
|
||||
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
|
||||
#else
|
||||
# define SWIFT_RUNTIME_NAME(X)
|
||||
#endif
|
||||
#if defined(__has_attribute) && __has_attribute(swift_name)
|
||||
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
|
||||
#else
|
||||
# define SWIFT_COMPILE_NAME(X)
|
||||
#endif
|
||||
#if defined(__has_attribute) && __has_attribute(objc_method_family)
|
||||
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
|
||||
#else
|
||||
# define SWIFT_METHOD_FAMILY(X)
|
||||
#endif
|
||||
#if defined(__has_attribute) && __has_attribute(noescape)
|
||||
# define SWIFT_NOESCAPE __attribute__((noescape))
|
||||
#else
|
||||
# define SWIFT_NOESCAPE
|
||||
#endif
|
||||
#if defined(__has_attribute) && __has_attribute(warn_unused_result)
|
||||
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
||||
#else
|
||||
# define SWIFT_WARN_UNUSED_RESULT
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_EXTRA)
|
||||
# define SWIFT_CLASS_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_PROTOCOL_EXTRA)
|
||||
# define SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_EXTRA)
|
||||
# define SWIFT_ENUM_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS)
|
||||
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# else
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_PROTOCOL)
|
||||
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_EXTENSION)
|
||||
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
|
||||
#endif
|
||||
|
||||
#if !defined(OBJC_DESIGNATED_INITIALIZER)
|
||||
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
|
||||
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
|
||||
# else
|
||||
# define OBJC_DESIGNATED_INITIALIZER
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM)
|
||||
# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_EXTRA _name : _type
|
||||
# if defined(__has_feature) && __has_feature(generalized_swift_name)
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type
|
||||
# else
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE)
|
||||
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE_MSG)
|
||||
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
|
||||
#endif
|
||||
#if !defined(SWIFT_AVAILABILITY)
|
||||
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED)
|
||||
# define SWIFT_DEPRECATED __attribute__((deprecated))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED_MSG)
|
||||
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
|
||||
#endif
|
||||
#if defined(__has_feature) && __has_feature(modules)
|
||||
@import UIKit;
|
||||
@import CoreGraphics;
|
||||
@import ObjectiveC;
|
||||
@import Foundation;
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
||||
@class FormViewController;
|
||||
@class NSCoder;
|
||||
@class UIView;
|
||||
@class UIResponder;
|
||||
@class UIToolbar;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms12FormBaseCell")
|
||||
@interface FormBaseCell : UITableViewCell
|
||||
@property (nonatomic, weak) FormViewController * _Nullable formViewController;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIResponder * _Nullable)firstResponderElement SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIToolbar * _Nonnull)inputAccesoryView SWIFT_WARN_UNUSED_RESULT;
|
||||
+ (CGFloat)formRowCellHeight SWIFT_WARN_UNUSED_RESULT;
|
||||
+ (BOOL)formRowCanBecomeFirstResponder SWIFT_WARN_UNUSED_RESULT;
|
||||
+ (void)formViewController:(FormViewController * _Nonnull)formViewController didSelectRow:(FormBaseCell * _Nonnull)didSelectRow;
|
||||
- (void)updateConstraints;
|
||||
@end
|
||||
|
||||
@class UILabel;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormTitleCell")
|
||||
@interface FormTitleCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
- (void)configure;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormButtonCell")
|
||||
@interface FormButtonCell : FormTitleCell
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormCheckCell")
|
||||
@interface FormCheckCell : FormTitleCell
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
+ (void)formViewController:(FormViewController * _Nonnull)formViewController didSelectRow:(FormBaseCell * _Nonnull)selectedRow;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormValueCell")
|
||||
@interface FormValueCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull valueLabel;
|
||||
- (void)configure;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms12FormDateCell")
|
||||
@interface FormDateCell : FormValueCell
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
+ (void)formViewController:(FormViewController * _Nonnull)formViewController didSelectRow:(FormBaseCell * _Nonnull)selectedRow;
|
||||
- (UIResponder * _Nullable)firstResponderElement SWIFT_WARN_UNUSED_RESULT;
|
||||
+ (BOOL)formRowCanBecomeFirstResponder SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_PROTOCOL("_TtP10SwiftForms12FormSelector_")
|
||||
@protocol FormSelector <NSObject>
|
||||
@property (nonatomic, strong) FormBaseCell * _Nullable formCell;
|
||||
@end
|
||||
|
||||
@class NSBundle;
|
||||
@class UITableView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms29FormOptionsSelectorController")
|
||||
@interface FormOptionsSelectorController : UITableViewController <FormSelector>
|
||||
@property (nonatomic, strong) FormBaseCell * _Nullable formCell;
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE;
|
||||
- (void)viewDidLoad;
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewStyle)style SWIFT_UNAVAILABLE;
|
||||
@end
|
||||
|
||||
@class UIPickerView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormPickerCell")
|
||||
@interface FormPickerCell : FormValueCell <UIPickerViewDelegate, UIPickerViewDataSource>
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (UIResponder * _Nullable)firstResponderElement SWIFT_WARN_UNUSED_RESULT;
|
||||
+ (void)formViewController:(FormViewController * _Nonnull)formViewController didSelectRow:(FormBaseCell * _Nonnull)selectedRow;
|
||||
- (NSString * _Nullable)pickerView:(UIPickerView * _Nonnull)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)pickerView:(UIPickerView * _Nonnull)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
|
||||
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView * _Nonnull)pickerView SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSInteger)pickerView:(UIPickerView * _Nonnull)pickerView numberOfRowsInComponent:(NSInteger)component SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UISegmentedControl;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms24FormSegmentedControlCell")
|
||||
@interface FormSegmentedControlCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UISegmentedControl * _Nonnull segmentedControl;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms16FormSelectorCell")
|
||||
@interface FormSelectorCell : FormValueCell
|
||||
- (void)update;
|
||||
+ (void)formViewController:(FormViewController * _Nonnull)formViewController didSelectRow:(FormBaseCell * _Nonnull)selectedRow;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UISlider;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormSliderCell")
|
||||
@interface FormSliderCell : FormTitleCell
|
||||
@property (nonatomic, readonly, strong) UISlider * _Nonnull sliderView;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UIStepper;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms15FormStepperCell")
|
||||
@interface FormStepperCell : FormTitleCell
|
||||
@property (nonatomic, readonly, strong) UIStepper * _Nonnull stepperView;
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull countLabel;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UISwitch;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormSwitchCell")
|
||||
@interface FormSwitchCell : FormTitleCell
|
||||
@property (nonatomic, readonly, strong) UISwitch * _Nonnull switchView;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UITextField;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms17FormTextFieldCell")
|
||||
@interface FormTextFieldCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UITextField * _Nonnull textField;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIResponder * _Nullable)firstResponderElement SWIFT_WARN_UNUSED_RESULT;
|
||||
+ (BOOL)formRowCanBecomeFirstResponder SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UITextView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms16FormTextViewCell")
|
||||
@interface FormTextViewCell : FormBaseCell <UITextViewDelegate>
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UITextView * _Nonnull textField;
|
||||
+ (CGFloat)formRowCellHeight SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)configure;
|
||||
- (void)update;
|
||||
- (NSDictionary<NSString *, UIView *> * _Nonnull)constraintsViews SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSArray<NSString *> * _Nonnull)defaultVisualConstraints SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)textViewDidChange:(UITextView * _Nonnull)textView;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms18FormViewController")
|
||||
@interface FormViewController : UITableViewController
|
||||
- (nonnull instancetype)init;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)viewDidLoad;
|
||||
- (id _Nullable)valueForTag:(NSString * _Nonnull)tag SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)setValue:(id _Nonnull)value forTag:(NSString * _Nonnull)tag;
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSString * _Nullable)tableView:(UITableView * _Nonnull)tableView titleForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSString * _Nullable)tableView:(UITableView * _Nonnull)tableView titleForFooterInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIView * _Nullable)tableView:(UITableView * _Nonnull)tableView viewForFooterInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIView * _Nullable)tableView:(UITableView * _Nonnull)tableView viewForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForFooterInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath;
|
||||
@end
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
19
My Mind/Carthage/Build/iOS/SwiftForms.framework/Headers/SwiftForms.h
generated
vendored
19
My Mind/Carthage/Build/iOS/SwiftForms.framework/Headers/SwiftForms.h
generated
vendored
@@ -1,19 +0,0 @@
|
||||
//
|
||||
// SwiftForms.h
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 14/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for SwiftForms.
|
||||
FOUNDATION_EXPORT double SwiftFormsVersionNumber;
|
||||
|
||||
//! Project version string for SwiftForms.
|
||||
FOUNDATION_EXPORT const unsigned char SwiftFormsVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SwiftForms/PublicHeader.h>
|
||||
|
||||
|
||||
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/arm.swiftdoc
generated
vendored
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/arm.swiftdoc
generated
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/i386.swiftdoc
generated
vendored
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/i386.swiftdoc
generated
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
10
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/module.modulemap
generated
vendored
10
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/module.modulemap
generated
vendored
@@ -1,10 +0,0 @@
|
||||
framework module SwiftForms {
|
||||
umbrella header "SwiftForms.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
|
||||
module SwiftForms.Swift {
|
||||
header "SwiftForms-Swift.h"
|
||||
}
|
||||
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/SwiftForms
generated
vendored
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/SwiftForms
generated
vendored
Binary file not shown.
60
My Mind/Carthage/Checkouts/SwiftForms/.gitignore
vendored
60
My Mind/Carthage/Checkouts/SwiftForms/.gitignore
vendored
@@ -1,60 +0,0 @@
|
||||
# Compiled source #
|
||||
###################
|
||||
*.com
|
||||
*.class
|
||||
*.dll
|
||||
*.exe
|
||||
*.o
|
||||
*.so
|
||||
|
||||
# Packages #
|
||||
############
|
||||
# it's better to unpack these files and commit the raw source
|
||||
# git has its own built in compression methods
|
||||
*.7z
|
||||
*.dmg
|
||||
*.gz
|
||||
*.iso
|
||||
*.jar
|
||||
*.rar
|
||||
*.tar
|
||||
*.zip
|
||||
|
||||
# Logs and databases #
|
||||
######################
|
||||
*.log
|
||||
*.sql
|
||||
*.sqlite
|
||||
|
||||
# OS generated files #
|
||||
######################
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# Pods #
|
||||
########
|
||||
Pods/
|
||||
|
||||
# Xcode #
|
||||
#########
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
*.xcworkspace
|
||||
!default.xcworkspace
|
||||
xcuserdata
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
.idea/
|
||||
21
My Mind/Carthage/Checkouts/SwiftForms/LICENSE
vendored
21
My Mind/Carthage/Checkouts/SwiftForms/LICENSE
vendored
@@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Xmartlabs ( http://xmartlabs.com )
|
||||
Copyright (c) 2014 Miguel Ángel Ortuño ( ortuman@gmail.com )
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
155
My Mind/Carthage/Checkouts/SwiftForms/README.MD
vendored
155
My Mind/Carthage/Checkouts/SwiftForms/README.MD
vendored
@@ -1,155 +0,0 @@
|
||||
|
||||
[](http://cocoadocs.org/docsets/SwiftForms)
|
||||
[](https://github.com/Carthage/Carthage)
|
||||
|
||||
[](http://cocoadocs.org/docsets/SwiftForms)
|
||||
[](http://cocoadocs.org/docsets/SwiftForms)
|
||||
|
||||
SwiftForms
|
||||
==========
|
||||
|
||||
Purpose
|
||||
-------
|
||||
SwiftForms is a powerful and extremely flexible library written in Swift that allows to create forms by just defining them in a couple of lines. It also provides the ability to customize cells appearance, use custom cells and define your own selector controllers.
|
||||
|
||||
#####Here is an screenshot from an example application using SwiftForms
|
||||
|
||||

|
||||
|
||||
How to create a form
|
||||
--------------------
|
||||
|
||||
Creating a form using SwiftForms is pretty straightforward. All you need is to derive your controller from `FormViewController` and define a `FormDescriptor` instance along with its sections and rows. Here is an example of how to create a simple form to input an email and a user password.
|
||||
|
||||
```swift
|
||||
|
||||
// Create form instace
|
||||
var form = FormDescriptor()
|
||||
form.title = "Example form"
|
||||
|
||||
// Define first section
|
||||
var section1 = FormSectionDescriptor()
|
||||
|
||||
var row = FormRowDescriptor(tag: "name", rowType: .Email, title: "Email")
|
||||
section1.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: "pass", rowType: .Password, title: "Password")
|
||||
section1.rows.append(row)
|
||||
|
||||
// Define second section
|
||||
var section2 = FormSectionDescriptor()
|
||||
|
||||
row = FormRowDescriptor(tag: "button", rowType: .Button, title: "Submit")
|
||||
section2.rows.append(row)
|
||||
|
||||
form.sections = [section1, section2]
|
||||
|
||||
self.form = form
|
||||
```
|
||||
To see a more complex form definition you can take a look to the example application.
|
||||
|
||||
Cell appearance
|
||||
----------------------
|
||||
|
||||
Every row descriptor has a `configuration` dictionary that allows to customize cell's appearance and behavior. In order to change concrete visual aspects of a row simply set `row.configuration.cell.appearance` value to a dictionary containing custom key-value coding properties.
|
||||
|
||||
Here's an example:
|
||||
|
||||
```swift
|
||||
row.configuration.cell.appearance = ["titleLabel.font" : UIFont.boldSystemFontOfSize(30.0), "segmentedControl.tintColor" : UIColor.redColor()]
|
||||
```
|
||||
|
||||
Custom cells
|
||||
-----------------
|
||||
|
||||
In addition, it is possible to create 100% custom cells by deriving from `FormBaseCell` class. In that case, don't forget to override `configure` and `update` methods. First method will be called only once and after cell has been created, and the second one every time cell content should be refreshed.
|
||||
|
||||
Here are the methods that help you to define custom cell behavior.
|
||||
```swift
|
||||
func configure() {
|
||||
/// override
|
||||
}
|
||||
|
||||
func update() {
|
||||
/// override
|
||||
}
|
||||
|
||||
class func formRowCellHeight() -> CGFloat {
|
||||
return 44.0
|
||||
}
|
||||
|
||||
class func formViewController(formViewController: FormViewController, didSelectRow: FormBaseCell) {
|
||||
}
|
||||
```
|
||||
Once you have defined your custom cell, and in order to use it for a concrete row, you'll have to set `FormRowDescriptor` cellClass property.
|
||||
|
||||
Custom selector controllers
|
||||
-------------------------------------
|
||||
|
||||
In order to customize selector controller your class should conform to `FormSelector` protocol. That way you'll have access to the cell instance that pushed the controller, being able to alter its properties or setting it's row value accordingly to user interaction.
|
||||
|
||||
After defining your class, don't forget to set `row.configuration.selection.controllerClass` value in the configuration dictionary to use your custom selector controller.
|
||||
|
||||
Requirements
|
||||
---------------------
|
||||
|
||||
* iOS 8.0 and above
|
||||
|
||||
### CocoaPods
|
||||
|
||||
[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects.
|
||||
|
||||
CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install it with the following command:
|
||||
|
||||
```bash
|
||||
$ gem install cocoapods
|
||||
```
|
||||
|
||||
To integrate SwiftForms into your Xcode project using CocoaPods, specify it in your `Podfile`:
|
||||
|
||||
```ruby
|
||||
source 'https://github.com/CocoaPods/Specs.git'
|
||||
platform :ios, '8.0'
|
||||
use_frameworks!
|
||||
|
||||
pod 'SwiftForms'
|
||||
```
|
||||
|
||||
Then, run the following command:
|
||||
|
||||
```bash
|
||||
$ pod install
|
||||
```
|
||||
|
||||
### Carthage
|
||||
|
||||
Simply add the following line to your `Cartfile`:
|
||||
|
||||
```
|
||||
github "ortuman/SwiftForms"
|
||||
```
|
||||
|
||||
Then run:
|
||||
|
||||
```bash
|
||||
$ carthage update
|
||||
```
|
||||
|
||||
For more information on [Carthage](https://github.com/Carthage/Carthage) see the [README](https://github.com/Carthage/Carthage/blob/master/README.md)
|
||||
|
||||
Copyright
|
||||
---------
|
||||
|
||||
SwiftForms is originally based on XLForm github project. (https://github.com/xmartlabs/XLForm)
|
||||
|
||||
Check LICENSE file for more details.
|
||||
|
||||
Contact
|
||||
-------
|
||||
|
||||
If you are using SwiftForms in your project and have any suggestion or question:
|
||||
|
||||
Miguel Angel Ortuño, <ortuman@gmail.com>
|
||||
|
||||
[@ortuman](http://twitter.com/ortuman)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "SwiftForms"
|
||||
s.version = "1.7"
|
||||
s.summary = "A small and lightweight library written in Swift that allows you to easily create forms"
|
||||
s.homepage = "https://github.com/ortuman/SwiftForms"
|
||||
s.license = { :type => "MIT", :file => "LICENSE" }
|
||||
s.authors = "Miguel Ángel Ortuño"
|
||||
s.ios.deployment_target = "8.0"
|
||||
s.source = { :git => "https://github.com/ortuman/SwiftForms.git", :tag => '1.7' }
|
||||
s.source_files = 'SwiftForms/*.swift','SwiftForms/descriptors/*.swift', 'SwiftForms/cells/base/*.swift', 'SwiftForms/cells/*.swift', 'SwiftForms/controllers/*.swift'
|
||||
end
|
||||
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// FormErrorType.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 2/1/16.
|
||||
// Copyright © 2016 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
public enum FormErrorType: Error {
|
||||
case sectionOutOfIndex
|
||||
case rowOutOfIndex
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.6.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,19 +0,0 @@
|
||||
//
|
||||
// SwiftForms.h
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 14/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for SwiftForms.
|
||||
FOUNDATION_EXPORT double SwiftFormsVersionNumber;
|
||||
|
||||
//! Project version string for SwiftForms.
|
||||
FOUNDATION_EXPORT const unsigned char SwiftFormsVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SwiftForms/PublicHeader.h>
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
//
|
||||
// FormButtonCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormButtonCell: FormTitleCell {
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
titleLabel.textAlignment = .center
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
//
|
||||
// FormCheckCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 22/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormCheckCell: FormTitleCell {
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
selectionStyle = .default
|
||||
accessoryType = .none
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
var rowValue: Bool
|
||||
if let value = rowDescriptor?.value as? Bool {
|
||||
rowValue = value
|
||||
} else {
|
||||
rowValue = false
|
||||
rowDescriptor?.value = rowValue as AnyObject
|
||||
}
|
||||
|
||||
accessoryType = (rowValue) ? .checkmark : .none
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormCheckCell else { return }
|
||||
row.check()
|
||||
}
|
||||
|
||||
// MARK: Private interface
|
||||
|
||||
fileprivate func check() {
|
||||
var newValue: Bool
|
||||
if let value = rowDescriptor?.value as? Bool {
|
||||
newValue = !value
|
||||
}
|
||||
else {
|
||||
newValue = true
|
||||
}
|
||||
rowDescriptor?.value = newValue as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
//
|
||||
// FormDateCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 22/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormDateCell: FormValueCell {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate let datePicker = UIDatePicker()
|
||||
fileprivate let hiddenTextField = UITextField(frame: CGRect.zero)
|
||||
|
||||
fileprivate let defaultDateFormatter = DateFormatter()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
contentView.addSubview(hiddenTextField)
|
||||
hiddenTextField.inputView = datePicker
|
||||
datePicker.datePickerMode = .date
|
||||
datePicker.addTarget(self, action: #selector(FormDateCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let showsInputToolbar = rowDescriptor?.configuration.cell.showsInputToolbar , showsInputToolbar && hiddenTextField.inputAccessoryView == nil {
|
||||
hiddenTextField.inputAccessoryView = inputAccesoryView()
|
||||
}
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let rowType = rowDescriptor?.type {
|
||||
switch rowType {
|
||||
case .date:
|
||||
datePicker.datePickerMode = .date
|
||||
defaultDateFormatter.dateStyle = .long
|
||||
defaultDateFormatter.timeStyle = .none
|
||||
case .time:
|
||||
datePicker.datePickerMode = .time
|
||||
defaultDateFormatter.dateStyle = .none
|
||||
defaultDateFormatter.timeStyle = .short
|
||||
default:
|
||||
datePicker.datePickerMode = .dateAndTime
|
||||
defaultDateFormatter.dateStyle = .long
|
||||
defaultDateFormatter.timeStyle = .short
|
||||
}
|
||||
}
|
||||
|
||||
if let date = rowDescriptor?.value as? Date {
|
||||
datePicker.date = date
|
||||
valueLabel.text = getDateFormatter().string(from: date)
|
||||
}
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormDateCell else { return }
|
||||
|
||||
if row.rowDescriptor?.value == nil {
|
||||
let date = Date()
|
||||
row.rowDescriptor?.value = date as AnyObject
|
||||
row.valueLabel.text = row.getDateFormatter().string(from: date)
|
||||
row.update()
|
||||
}
|
||||
|
||||
row.hiddenTextField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
open override func firstResponderElement() -> UIResponder? {
|
||||
return hiddenTextField
|
||||
}
|
||||
|
||||
open override class func formRowCanBecomeFirstResponder() -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_ sender: UIDatePicker) {
|
||||
rowDescriptor?.value = sender.date as AnyObject
|
||||
valueLabel.text = getDateFormatter().string(from: sender.date)
|
||||
update()
|
||||
}
|
||||
|
||||
// MARK: Private interface
|
||||
|
||||
fileprivate func getDateFormatter() -> DateFormatter {
|
||||
guard let dateFormatter = rowDescriptor?.configuration.date.dateFormatter else { return defaultDateFormatter }
|
||||
return dateFormatter
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
//
|
||||
// FormTextFieldCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 20/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class FormLabelCell: FormValueCell {
|
||||
|
||||
/// MARK: FormBaseCell
|
||||
|
||||
override func configure() {
|
||||
super.configure()
|
||||
|
||||
accessoryType = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
valueLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
valueLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
valueLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(valueLabel)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(1000, for: .horizontal)
|
||||
|
||||
// apply constant constraints
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
}
|
||||
|
||||
override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
valueLabel.text = rowDescriptor?.configuration.cell.placeholder
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
//
|
||||
// FormPickerCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 22/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormPickerCell: FormValueCell, UIPickerViewDelegate, UIPickerViewDataSource {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate let picker = UIPickerView()
|
||||
fileprivate let hiddenTextField = UITextField(frame: CGRect.zero)
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
accessoryType = .none
|
||||
|
||||
picker.delegate = self
|
||||
picker.dataSource = self
|
||||
hiddenTextField.inputView = picker
|
||||
|
||||
contentView.addSubview(hiddenTextField)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
picker.reloadAllComponents()
|
||||
|
||||
if let showsInputToolbar = rowDescriptor?.configuration.cell.showsInputToolbar , showsInputToolbar && hiddenTextField.inputAccessoryView == nil {
|
||||
hiddenTextField.inputAccessoryView = inputAccesoryView()
|
||||
}
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let selectedValue = rowDescriptor?.value {
|
||||
valueLabel.text = rowDescriptor?.configuration.selection.optionTitleClosure?(selectedValue)
|
||||
if let options = rowDescriptor?.configuration.selection.options , !options.isEmpty {
|
||||
var selectedIndex: Int?
|
||||
for (index, value) in options.enumerated() {
|
||||
if value === selectedValue {
|
||||
selectedIndex = index
|
||||
break
|
||||
}
|
||||
}
|
||||
if let index = selectedIndex {
|
||||
picker.selectRow(index, inComponent: 0, animated: false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open override func firstResponderElement() -> UIResponder? {
|
||||
return hiddenTextField
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormPickerCell else { return }
|
||||
|
||||
if selectedRow.rowDescriptor?.value == nil {
|
||||
guard let options = selectedRow.rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
let value = options[0]
|
||||
selectedRow.rowDescriptor?.value = value
|
||||
row.valueLabel.text = selectedRow.rowDescriptor?.configuration.selection.optionTitleClosure?(value)
|
||||
row.hiddenTextField.becomeFirstResponder()
|
||||
} else {
|
||||
guard let value = selectedRow.rowDescriptor?.value else { return }
|
||||
row.valueLabel.text = selectedRow.rowDescriptor?.configuration.selection.optionTitleClosure?(value)
|
||||
row.hiddenTextField.becomeFirstResponder()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UIPickerViewDelegate
|
||||
|
||||
open func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return nil }
|
||||
guard row < options.count else { return nil }
|
||||
return rowDescriptor?.configuration.selection.optionTitleClosure?(options[row])
|
||||
}
|
||||
|
||||
open func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
guard row < options.count else { return }
|
||||
let newValue = options[row]
|
||||
rowDescriptor?.value = newValue
|
||||
valueLabel.text = rowDescriptor?.configuration.selection.optionTitleClosure?(newValue)
|
||||
}
|
||||
|
||||
// MARK: UIPickerViewDataSource
|
||||
|
||||
open func numberOfComponents(in pickerView: UIPickerView) -> Int {
|
||||
return 1
|
||||
}
|
||||
|
||||
open func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
|
||||
guard let options = rowDescriptor?.configuration.selection.options else { return 0 }
|
||||
return options.count
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
//
|
||||
// FormSegmentedControlCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSegmentedControlCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let segmentedControl = UISegmentedControl()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject] = []
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
segmentedControl.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.setContentCompressionResistancePriority(500, for: .horizontal)
|
||||
segmentedControl.setContentCompressionResistancePriority(500, for: .horizontal)
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(segmentedControl)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: segmentedControl, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
segmentedControl.addTarget(self, action: #selector(FormSegmentedControlCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
updateSegmentedControl()
|
||||
|
||||
guard let value = rowDescriptor?.value else { return }
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
|
||||
var idx = 0
|
||||
for optionValue in options {
|
||||
if optionValue === value {
|
||||
segmentedControl.selectedSegmentIndex = idx
|
||||
break
|
||||
}
|
||||
idx += 1
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "segmentedControl" : segmentedControl]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
if let text = titleLabel.text , text.characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-16-[segmentedControl]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[segmentedControl]-16-|"]
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_ sender: UISegmentedControl) {
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
let value = options[sender.selectedSegmentIndex]
|
||||
rowDescriptor?.value = value
|
||||
}
|
||||
|
||||
// MARK: Private
|
||||
|
||||
fileprivate func updateSegmentedControl() {
|
||||
segmentedControl.removeAllSegments()
|
||||
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
|
||||
var idx = 0
|
||||
for value in options {
|
||||
let title = rowDescriptor?.configuration.selection.optionTitleClosure?(value)
|
||||
segmentedControl.insertSegment(withTitle: title, at: idx, animated: false)
|
||||
idx += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
//
|
||||
// FormSelectorCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSelectorCell: FormValueCell {
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
var title: String?
|
||||
if let multipleValues = rowDescriptor?.value as? [AnyObject] {
|
||||
var multipleValuesTitle = ""
|
||||
for (index, selectedValue) in multipleValues.enumerated() {
|
||||
guard let selectedValueTitle = rowDescriptor?.configuration.selection.optionTitleClosure?(selectedValue) else { continue }
|
||||
if index != 0 {
|
||||
multipleValuesTitle += ", "
|
||||
}
|
||||
multipleValuesTitle += selectedValueTitle
|
||||
}
|
||||
title = multipleValuesTitle
|
||||
} else if let singleValue = rowDescriptor?.value {
|
||||
title = rowDescriptor?.configuration.selection.optionTitleClosure?(singleValue)
|
||||
}
|
||||
|
||||
if let title = title , title.characters.count > 0 {
|
||||
valueLabel.text = title
|
||||
valueLabel.textColor = UIColor.black
|
||||
} else {
|
||||
valueLabel.text = rowDescriptor?.configuration.cell.placeholder
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
}
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormSelectorCell else { return }
|
||||
|
||||
formViewController.view.endEditing(true)
|
||||
|
||||
var selectorControllerClass: UIViewController.Type
|
||||
|
||||
if let controllerClass = row.rowDescriptor?.configuration.selection.controllerClass as? UIViewController.Type {
|
||||
selectorControllerClass = controllerClass
|
||||
} else { // fallback to default cell class
|
||||
selectorControllerClass = FormOptionsSelectorController.self
|
||||
}
|
||||
|
||||
let selectorController = selectorControllerClass.init()
|
||||
guard let formRowDescriptorViewController = selectorController as? FormSelector else { return }
|
||||
|
||||
formRowDescriptorViewController.formCell = row
|
||||
formViewController.navigationController?.pushViewController(selectorController, animated: true)
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
//
|
||||
// FormSliderCell.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 23/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSliderCell: FormTitleCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let sliderView = UISlider()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
sliderView.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(sliderView)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: sliderView, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
sliderView.addTarget(self, action: #selector(FormSliderCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let maximumValue = rowDescriptor?.configuration.stepper.maximumValue { sliderView.maximumValue = Float(maximumValue) }
|
||||
if let minimumValue = rowDescriptor?.configuration.stepper.minimumValue { sliderView.minimumValue = Float(minimumValue) }
|
||||
if let continuous = rowDescriptor?.configuration.stepper.continuous { sliderView.isContinuous = continuous }
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let value = rowDescriptor?.value as? Float {
|
||||
sliderView.value = value
|
||||
} else {
|
||||
sliderView.value = sliderView.minimumValue
|
||||
rowDescriptor?.value = sliderView.minimumValue as AnyObject
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "sliderView" : sliderView]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
var constraints: [String] = []
|
||||
|
||||
constraints.append("V:|[titleLabel]|")
|
||||
constraints.append("H:|-16-[titleLabel]-16-[sliderView]-16-|")
|
||||
|
||||
return constraints
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_: UISlider) {
|
||||
rowDescriptor?.value = sliderView.value as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
//
|
||||
// FormStepperCell.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 23/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormStepperCell: FormTitleCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let stepperView = UIStepper()
|
||||
open let countLabel = UILabel()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
stepperView.translatesAutoresizingMaskIntoConstraints = false
|
||||
countLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
countLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(countLabel)
|
||||
contentView.addSubview(stepperView)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: stepperView, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
stepperView.addTarget(self, action: #selector(FormStepperCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let maximumValue = rowDescriptor?.configuration.stepper.maximumValue { stepperView.maximumValue = maximumValue }
|
||||
if let minimumValue = rowDescriptor?.configuration.stepper.minimumValue { stepperView.minimumValue = minimumValue }
|
||||
if let steps = rowDescriptor?.configuration.stepper.steps { stepperView.stepValue = steps }
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let value = rowDescriptor?.value as? Double {
|
||||
stepperView.value = value
|
||||
countLabel.text = String(value)
|
||||
} else {
|
||||
stepperView.value = stepperView.minimumValue
|
||||
rowDescriptor?.value = stepperView.minimumValue as AnyObject
|
||||
countLabel.text = String(stepperView.minimumValue)
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "countLabel" : countLabel, "stepperView" : stepperView]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
var constraints: [String] = []
|
||||
|
||||
constraints.append("V:|[titleLabel]|")
|
||||
constraints.append("V:|[countLabel]|")
|
||||
|
||||
constraints.append("H:|-16-[titleLabel][countLabel]-[stepperView]-16-|")
|
||||
return constraints
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_: UISwitch) {
|
||||
rowDescriptor?.value = stepperView.value as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
//
|
||||
// FormSwitchCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSwitchCell: FormTitleCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let switchView = UISwitch()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
switchView.addTarget(self, action: #selector(FormSwitchCell.valueChanged(_:)), for: .valueChanged)
|
||||
accessoryView = switchView
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let value = rowDescriptor?.value as? Bool {
|
||||
switchView.isOn = value
|
||||
} else {
|
||||
switchView.isOn = false
|
||||
rowDescriptor?.value = false as AnyObject
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_: UISwitch) {
|
||||
rowDescriptor?.value = switchView.isOn as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
//
|
||||
// FormTextFieldCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormTextFieldCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let textField = UITextField()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject] = []
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
textField.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
textField.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(textField)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(1000, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
textField.addTarget(self, action: #selector(FormTextFieldCell.editingChanged(_:)), for: .editingChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let showsInputToolbar = rowDescriptor?.configuration.cell.showsInputToolbar , showsInputToolbar && textField.inputAccessoryView == nil {
|
||||
textField.inputAccessoryView = inputAccesoryView()
|
||||
}
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
textField.text = rowDescriptor?.value as? String
|
||||
textField.placeholder = rowDescriptor?.configuration.cell.placeholder
|
||||
|
||||
textField.isSecureTextEntry = false
|
||||
textField.clearButtonMode = .whileEditing
|
||||
|
||||
if let type = rowDescriptor?.type {
|
||||
switch type {
|
||||
case .text:
|
||||
textField.autocorrectionType = .default
|
||||
textField.autocapitalizationType = .sentences
|
||||
textField.keyboardType = .default
|
||||
case .number:
|
||||
textField.keyboardType = .numberPad
|
||||
case .numbersAndPunctuation:
|
||||
textField.keyboardType = .numbersAndPunctuation
|
||||
case .decimal:
|
||||
textField.keyboardType = .decimalPad
|
||||
case .name:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .words
|
||||
textField.keyboardType = .default
|
||||
case .phone:
|
||||
textField.keyboardType = .phonePad
|
||||
case .namePhone:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .words
|
||||
textField.keyboardType = .namePhonePad
|
||||
case .url:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .URL
|
||||
case .twitter:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .twitter
|
||||
case .email:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .emailAddress
|
||||
case .asciiCapable:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .asciiCapable
|
||||
case .password:
|
||||
textField.isSecureTextEntry = true
|
||||
textField.clearsOnBeginEditing = false
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
var views = ["titleLabel" : titleLabel, "textField" : textField]
|
||||
if self.imageView!.image != nil {
|
||||
views["imageView"] = imageView
|
||||
}
|
||||
return views
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
if self.imageView!.image != nil {
|
||||
if titleLabel.text != nil && (titleLabel.text!).characters.count > 0 {
|
||||
return ["H:[imageView]-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:[imageView]-[textField]-16-|"]
|
||||
}
|
||||
} else {
|
||||
if titleLabel.text != nil && (titleLabel.text!).characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[textField]-16-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open override func firstResponderElement() -> UIResponder? {
|
||||
return textField
|
||||
}
|
||||
|
||||
open override class func formRowCanBecomeFirstResponder() -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func editingChanged(_ sender: UITextField) {
|
||||
guard let text = sender.text, text.characters.count > 0 else { rowDescriptor?.value = nil; update(); return }
|
||||
rowDescriptor?.value = text as AnyObject
|
||||
}
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
//
|
||||
// FormTextViewCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Joey Padot on 12/6/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormTextViewCell : FormBaseCell, UITextViewDelegate {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let textField = UITextView()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject]!
|
||||
|
||||
// MARK: Class Funcs
|
||||
|
||||
open override class func formRowCellHeight() -> CGFloat {
|
||||
return 110.0
|
||||
}
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
textField.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
textField.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(textField)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .top, relatedBy: .equal, toItem: contentView, attribute: .top, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .bottom, relatedBy: .equal, toItem: contentView, attribute: .bottom, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
textField.delegate = self
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
textField.text = rowDescriptor?.value as? String
|
||||
|
||||
textField.isSecureTextEntry = false
|
||||
textField.autocorrectionType = .default
|
||||
textField.autocapitalizationType = .sentences
|
||||
textField.keyboardType = .default
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
var views = ["titleLabel" : titleLabel, "textField" : textField]
|
||||
if self.imageView!.image != nil {
|
||||
views["imageView"] = imageView
|
||||
}
|
||||
return views
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
if self.imageView!.image != nil {
|
||||
if let text = titleLabel.text , text.characters.count > 0 {
|
||||
return ["H:[imageView]-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:[imageView]-[textField]-16-|"]
|
||||
}
|
||||
} else {
|
||||
if let text = titleLabel.text , text.characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[textField]-16-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UITextViewDelegate
|
||||
|
||||
open func textViewDidChange(_ textView: UITextView) {
|
||||
guard let text = textView.text , text.characters.count > 0 else { rowDescriptor?.value = nil; update(); return }
|
||||
rowDescriptor?.value = text as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
//
|
||||
// FormBaseCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormBaseCell: UITableViewCell {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
open var rowDescriptor: FormRowDescriptor? {
|
||||
didSet {
|
||||
self.update()
|
||||
}
|
||||
}
|
||||
|
||||
open weak var formViewController: FormViewController?
|
||||
|
||||
fileprivate var customConstraints: [NSLayoutConstraint] = []
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public required override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
|
||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||
}
|
||||
|
||||
public required init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
}
|
||||
|
||||
// MARK: Public interface
|
||||
|
||||
open func configure() {
|
||||
/// override
|
||||
}
|
||||
|
||||
open func update() {
|
||||
/// override
|
||||
}
|
||||
|
||||
open func defaultVisualConstraints() -> [String] {
|
||||
/// override
|
||||
return []
|
||||
}
|
||||
|
||||
open func constraintsViews() -> [String : UIView] {
|
||||
/// override
|
||||
return [:]
|
||||
}
|
||||
|
||||
open func firstResponderElement() -> UIResponder? {
|
||||
/// override
|
||||
return nil
|
||||
}
|
||||
|
||||
open func inputAccesoryView() -> UIToolbar {
|
||||
|
||||
let actionBar = UIToolbar()
|
||||
actionBar.isTranslucent = true
|
||||
actionBar.sizeToFit()
|
||||
actionBar.barStyle = .default
|
||||
|
||||
let doneButton = UIBarButtonItem(title: NSLocalizedString("Done", comment: ""), style: .done, target: self, action: #selector(FormBaseCell.handleDoneAction(_:)))
|
||||
|
||||
let flexible = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
actionBar.items = [flexible, doneButton]
|
||||
|
||||
return actionBar
|
||||
}
|
||||
|
||||
internal func handleDoneAction(_: UIBarButtonItem) {
|
||||
firstResponderElement()?.resignFirstResponder()
|
||||
}
|
||||
|
||||
open class func formRowCellHeight() -> CGFloat {
|
||||
return 44.0
|
||||
}
|
||||
|
||||
open class func formRowCanBecomeFirstResponder() -> Bool {
|
||||
return false
|
||||
}
|
||||
|
||||
open class func formViewController(_ formViewController: FormViewController, didSelectRow: FormBaseCell) {
|
||||
}
|
||||
|
||||
// MARK: Constraints
|
||||
|
||||
open override func updateConstraints() {
|
||||
if customConstraints.count > 0 {
|
||||
contentView.removeConstraints(customConstraints)
|
||||
}
|
||||
|
||||
let views = constraintsViews()
|
||||
|
||||
customConstraints.removeAll()
|
||||
|
||||
var visualConstraints = [String]()
|
||||
|
||||
if let visualConstraintsClosure = rowDescriptor?.configuration.cell.visualConstraintsClosure {
|
||||
visualConstraints = visualConstraintsClosure(self)
|
||||
} else {
|
||||
visualConstraints = defaultVisualConstraints()
|
||||
}
|
||||
|
||||
for visualConstraint in visualConstraints {
|
||||
let constraints = NSLayoutConstraint.constraints(withVisualFormat: visualConstraint, options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
|
||||
for constraint in constraints {
|
||||
customConstraints.append(constraint)
|
||||
}
|
||||
}
|
||||
|
||||
contentView.addConstraints(customConstraints)
|
||||
super.updateConstraints()
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
//
|
||||
// FormTitleCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 13/11/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormTitleCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
// apply constant constraints
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
return ["H:|-16-[titleLabel]-16-|"]
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
//
|
||||
// FormValueCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 13/11/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormValueCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let valueLabel = UILabel()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject]!
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
accessoryType = .disclosureIndicator
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
valueLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
valueLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
valueLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(valueLabel)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(1000, for: .horizontal)
|
||||
|
||||
// apply constant constraints
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "valueLabel" : valueLabel]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
|
||||
// apply default constraints
|
||||
var rightPadding = 0
|
||||
if accessoryType == .none {
|
||||
rightPadding = 16
|
||||
}
|
||||
|
||||
if titleLabel.text != nil && (titleLabel.text!).characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[valueLabel]-\(rightPadding)-|"]
|
||||
}
|
||||
else {
|
||||
return ["H:|-16-[valueLabel]-\(rightPadding)-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,125 +0,0 @@
|
||||
//
|
||||
// FormOptionsSelectorController.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormOptionsSelectorController: UITableViewController, FormSelector {
|
||||
|
||||
// MARK: FormSelector
|
||||
|
||||
open var formCell: FormBaseCell?
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init() {
|
||||
super.init(style: .grouped)
|
||||
}
|
||||
|
||||
public required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)!
|
||||
}
|
||||
|
||||
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
||||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||
}
|
||||
|
||||
open override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.navigationItem.title = formCell?.rowDescriptor?.title
|
||||
}
|
||||
|
||||
// MARK: UITableViewDataSource
|
||||
|
||||
open override func numberOfSections(in tableView: UITableView) -> Int {
|
||||
return 1
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
guard let options = formCell?.rowDescriptor?.configuration.selection.options , !options.isEmpty else { return 0 }
|
||||
return options.count
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
||||
return 0.1
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
|
||||
let reuseIdentifier = NSStringFromClass(type(of: self))
|
||||
|
||||
var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier)
|
||||
if cell == nil {
|
||||
cell = UITableViewCell(style: .default, reuseIdentifier: reuseIdentifier)
|
||||
}
|
||||
|
||||
let options = formCell!.rowDescriptor!.configuration.selection.options
|
||||
let optionValue = options[(indexPath as NSIndexPath).row]
|
||||
|
||||
cell?.textLabel?.text = formCell?.rowDescriptor?.configuration.selection.optionTitleClosure?(optionValue)
|
||||
|
||||
if let selectedOptions = formCell?.rowDescriptor?.value as? [AnyObject] {
|
||||
if let _ = selectedOptions.index(where: { $0 === optionValue }) {
|
||||
cell?.accessoryType = .checkmark
|
||||
} else {
|
||||
cell?.accessoryType = .none
|
||||
}
|
||||
|
||||
} else if let selectedOption = formCell?.rowDescriptor?.value {
|
||||
if optionValue === selectedOption {
|
||||
cell?.accessoryType = .checkmark
|
||||
} else {
|
||||
cell?.accessoryType = .none
|
||||
}
|
||||
}
|
||||
|
||||
return cell!
|
||||
}
|
||||
|
||||
// MARK: UITableViewDelegate
|
||||
|
||||
open override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
|
||||
let cell = tableView.cellForRow(at: indexPath)
|
||||
|
||||
var allowsMultipleSelection = false
|
||||
if let allowsMultipleSelectionValue = formCell?.rowDescriptor?.configuration.selection.allowsMultipleSelection {
|
||||
allowsMultipleSelection = allowsMultipleSelectionValue
|
||||
}
|
||||
|
||||
let options = formCell!.rowDescriptor!.configuration.selection.options
|
||||
let selectedOption = options[(indexPath as NSIndexPath).row]
|
||||
|
||||
if allowsMultipleSelection {
|
||||
if var selectedOptions = formCell?.rowDescriptor?.value as? [AnyObject] {
|
||||
if let index = selectedOptions.index(where: { $0 === selectedOption }) {
|
||||
selectedOptions.remove(at: index)
|
||||
cell?.accessoryType = .none
|
||||
} else {
|
||||
selectedOptions.append(selectedOption)
|
||||
cell?.accessoryType = .checkmark
|
||||
}
|
||||
formCell?.rowDescriptor?.value = selectedOptions as AnyObject
|
||||
|
||||
} else {
|
||||
formCell?.rowDescriptor?.value = [AnyObject](arrayLiteral: selectedOption) as AnyObject
|
||||
cell?.accessoryType = .checkmark
|
||||
}
|
||||
|
||||
} else {
|
||||
formCell?.rowDescriptor?.value = selectedOption
|
||||
}
|
||||
|
||||
formCell?.update()
|
||||
|
||||
if allowsMultipleSelection {
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
} else {
|
||||
let _ = self.navigationController?.popViewController(animated: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
//
|
||||
// FormSelector.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@objc public protocol FormSelector: NSObjectProtocol {
|
||||
var formCell: FormBaseCell? { get set }
|
||||
}
|
||||
@@ -1,225 +0,0 @@
|
||||
//
|
||||
// FormViewController.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuño on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormViewController : UITableViewController {
|
||||
|
||||
private static var __once: () = {
|
||||
FormViewController.defaultCellClasses[.text] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.label] = FormLabelCell.self
|
||||
FormViewController.defaultCellClasses[.number] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.numbersAndPunctuation] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.decimal] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.name] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.phone] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.url] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.twitter] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.namePhone] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.email] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.asciiCapable] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.password] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.button] = FormButtonCell.self
|
||||
FormViewController.defaultCellClasses[.booleanSwitch] = FormSwitchCell.self
|
||||
FormViewController.defaultCellClasses[.booleanCheck] = FormCheckCell.self
|
||||
FormViewController.defaultCellClasses[.segmentedControl] = FormSegmentedControlCell.self
|
||||
FormViewController.defaultCellClasses[.picker] = FormPickerCell.self
|
||||
FormViewController.defaultCellClasses[.date] = FormDateCell.self
|
||||
FormViewController.defaultCellClasses[.time] = FormDateCell.self
|
||||
FormViewController.defaultCellClasses[.dateAndTime] = FormDateCell.self
|
||||
FormViewController.defaultCellClasses[.stepper] = FormStepperCell.self
|
||||
FormViewController.defaultCellClasses[.slider] = FormSliderCell.self
|
||||
FormViewController.defaultCellClasses[.multipleSelector] = FormSelectorCell.self
|
||||
FormViewController.defaultCellClasses[.multilineText] = FormTextViewCell.self
|
||||
}()
|
||||
|
||||
// MARK: Class variables
|
||||
|
||||
fileprivate static var onceDefaultCellClass: Int = 0
|
||||
fileprivate static var defaultCellClasses: [FormRowDescriptor.RowType : FormBaseCell.Type] = [:]
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
open var form = FormDescriptor()
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public convenience init() {
|
||||
self.init(style: .grouped)
|
||||
}
|
||||
|
||||
public convenience init(form: FormDescriptor) {
|
||||
self.init(style: .grouped)
|
||||
self.form = form
|
||||
}
|
||||
|
||||
public override init(style: UITableViewStyle) {
|
||||
super.init(style: style)
|
||||
}
|
||||
|
||||
public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
||||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||
}
|
||||
|
||||
public required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)!
|
||||
}
|
||||
|
||||
// MARK: View life cycle
|
||||
|
||||
open override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
navigationItem.title = form.title
|
||||
}
|
||||
|
||||
// MARK: Public interface
|
||||
|
||||
open func valueForTag(_ tag: String) -> AnyObject? {
|
||||
for section in form.sections {
|
||||
for row in section.rows {
|
||||
if row.tag == tag {
|
||||
return row.value
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
open func setValue(_ value: AnyObject, forTag tag: String) {
|
||||
for (sectionIndex, section) in form.sections.enumerated() {
|
||||
for (rowIndex, row) in section.rows.enumerated() {
|
||||
if row.tag == tag {
|
||||
form.sections[sectionIndex].rows[rowIndex].value = value
|
||||
if let cell = self.tableView.cellForRow(at: IndexPath(row: rowIndex, section: sectionIndex)) as? FormBaseCell {
|
||||
cell.update()
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UITableViewDataSource
|
||||
|
||||
open override func numberOfSections(in tableView: UITableView) -> Int {
|
||||
return form.sections.count
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
return form.sections[section].rows.count
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
|
||||
let rowDescriptor = formRowDescriptorAtIndexPath(indexPath)
|
||||
|
||||
let formBaseCellClass = formBaseCellClassFromRowDescriptor(rowDescriptor)
|
||||
|
||||
let reuseIdentifier = NSStringFromClass(formBaseCellClass!)
|
||||
|
||||
var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier) as? FormBaseCell
|
||||
if cell == nil {
|
||||
cell = formBaseCellClass?.init(style: .default, reuseIdentifier: reuseIdentifier)
|
||||
cell?.formViewController = self
|
||||
cell?.configure()
|
||||
}
|
||||
|
||||
cell?.rowDescriptor = rowDescriptor
|
||||
|
||||
// apply cell custom design
|
||||
for (keyPath, value) in rowDescriptor.configuration.cell.appearance {
|
||||
cell?.setValue(value, forKeyPath: keyPath)
|
||||
}
|
||||
return cell!
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
|
||||
return form.sections[section].headerTitle
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
|
||||
return form.sections[section].footerTitle
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
|
||||
guard let headerView = form.sections[section].headerView else { return nil }
|
||||
return headerView
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
||||
guard let footerView = form.sections[section].footerView else { return nil }
|
||||
return footerView
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
||||
guard let headerView = form.sections[section].headerView , headerView.translatesAutoresizingMaskIntoConstraints else {
|
||||
return form.sections[section].headerViewHeight
|
||||
}
|
||||
return headerView.frame.size.height
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
|
||||
guard let footerView = form.sections[section].footerView , footerView.translatesAutoresizingMaskIntoConstraints else {
|
||||
return form.sections[section].footerViewHeight
|
||||
}
|
||||
return footerView.frame.size.height
|
||||
}
|
||||
|
||||
// MARK: UITableViewDelegate
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||
|
||||
let rowDescriptor = formRowDescriptorAtIndexPath(indexPath)
|
||||
|
||||
if let formBaseCellClass = formBaseCellClassFromRowDescriptor(rowDescriptor) {
|
||||
return formBaseCellClass.formRowCellHeight()
|
||||
}
|
||||
return super.tableView(tableView, heightForRowAt: indexPath)
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
|
||||
let rowDescriptor = formRowDescriptorAtIndexPath(indexPath)
|
||||
|
||||
if let selectedRow = tableView.cellForRow(at: indexPath) as? FormBaseCell {
|
||||
if let formBaseCellClass = formBaseCellClassFromRowDescriptor(rowDescriptor) {
|
||||
formBaseCellClass.formViewController(self, didSelectRow: selectedRow)
|
||||
}
|
||||
}
|
||||
|
||||
if let didSelectClosure = rowDescriptor.configuration.button.didSelectClosure {
|
||||
didSelectClosure(rowDescriptor)
|
||||
}
|
||||
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
}
|
||||
|
||||
fileprivate class func defaultCellClassForRowType(_ rowType: FormRowDescriptor.RowType) -> FormBaseCell.Type {
|
||||
_ = FormViewController.__once
|
||||
return FormViewController.defaultCellClasses[rowType]!
|
||||
}
|
||||
|
||||
fileprivate func formRowDescriptorAtIndexPath(_ indexPath: IndexPath) -> FormRowDescriptor {
|
||||
|
||||
let section = form.sections[(indexPath as NSIndexPath).section]
|
||||
let rowDescriptor = section.rows[(indexPath as NSIndexPath).row]
|
||||
return rowDescriptor
|
||||
}
|
||||
|
||||
fileprivate func formBaseCellClassFromRowDescriptor(_ rowDescriptor: FormRowDescriptor) -> FormBaseCell.Type! {
|
||||
|
||||
var formBaseCellClass: FormBaseCell.Type
|
||||
|
||||
if let cellClass = rowDescriptor.configuration.cell.cellClass as? FormBaseCell.Type {
|
||||
formBaseCellClass = cellClass
|
||||
} else {
|
||||
formBaseCellClass = FormViewController.defaultCellClassForRowType(rowDescriptor.type)
|
||||
}
|
||||
return formBaseCellClass
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
//
|
||||
// FormDescriptor.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public final class FormDescriptor {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public var title: String
|
||||
public var sections: [FormSectionDescriptor] = []
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init() {
|
||||
self.title = ""
|
||||
}
|
||||
|
||||
public init(title: String) {
|
||||
self.title = title
|
||||
}
|
||||
|
||||
// MARK: Public
|
||||
|
||||
public func formValues() -> [String : AnyObject] {
|
||||
|
||||
var formValues: [String : AnyObject] = [:]
|
||||
|
||||
for section in sections {
|
||||
for row in section.rows {
|
||||
if row.type != .button {
|
||||
if let value = row.value {
|
||||
formValues[row.tag] = value
|
||||
} else {
|
||||
formValues[row.tag] = NSNull()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return formValues
|
||||
}
|
||||
|
||||
public func validateForm() -> FormRowDescriptor? {
|
||||
for section in sections {
|
||||
for row in section.rows {
|
||||
if row.configuration.cell.required && row.value == nil {
|
||||
return row
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
//
|
||||
// FormRowDescriptor.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public final class FormRowDescriptor {
|
||||
|
||||
// MARK: Types
|
||||
|
||||
public enum RowType {
|
||||
case unknown
|
||||
case label
|
||||
case text
|
||||
case url
|
||||
case number
|
||||
case numbersAndPunctuation
|
||||
case decimal
|
||||
case name
|
||||
case phone
|
||||
case namePhone
|
||||
case email
|
||||
case twitter
|
||||
case asciiCapable
|
||||
case password
|
||||
case button
|
||||
case booleanSwitch
|
||||
case booleanCheck
|
||||
case segmentedControl
|
||||
case picker
|
||||
case date
|
||||
case time
|
||||
case dateAndTime
|
||||
case stepper
|
||||
case slider
|
||||
case multipleSelector
|
||||
case multilineText
|
||||
}
|
||||
|
||||
public struct CellConfiguration {
|
||||
public var cellClass: AnyClass?
|
||||
public var appearance: [String : AnyObject]
|
||||
public var placeholder: String?
|
||||
public var showsInputToolbar: Bool
|
||||
public var required: Bool
|
||||
public var willUpdateClosure: ((FormRowDescriptor) -> Void)?
|
||||
public var didUpdateClosure: ((FormRowDescriptor) -> Void)?
|
||||
public var visualConstraintsClosure: ((FormBaseCell) -> [String])?
|
||||
|
||||
public init() {
|
||||
cellClass = nil
|
||||
appearance = [:]
|
||||
placeholder = nil
|
||||
showsInputToolbar = false
|
||||
required = true
|
||||
willUpdateClosure = nil
|
||||
didUpdateClosure = nil
|
||||
visualConstraintsClosure = nil
|
||||
}
|
||||
}
|
||||
|
||||
public struct SelectionConfiguration {
|
||||
public var controllerClass: AnyClass?
|
||||
public var options: [AnyObject]
|
||||
public var optionTitleClosure: ((AnyObject) -> String)?
|
||||
public var allowsMultipleSelection: Bool
|
||||
|
||||
public init() {
|
||||
controllerClass = nil
|
||||
options = []
|
||||
optionTitleClosure = nil
|
||||
allowsMultipleSelection = false
|
||||
}
|
||||
}
|
||||
|
||||
public struct ButtonConfiguration {
|
||||
public var didSelectClosure: ((FormRowDescriptor) -> Void)?
|
||||
|
||||
public init() {
|
||||
didSelectClosure = nil
|
||||
}
|
||||
}
|
||||
|
||||
public struct StepperConfiguration {
|
||||
public var maximumValue: Double
|
||||
public var minimumValue: Double
|
||||
public var steps: Double
|
||||
public var continuous: Bool
|
||||
|
||||
public init() {
|
||||
maximumValue = 0.0
|
||||
minimumValue = 0.0
|
||||
steps = 0.0
|
||||
continuous = false
|
||||
}
|
||||
}
|
||||
|
||||
public struct DateConfiguration {
|
||||
public var dateFormatter: DateFormatter?
|
||||
}
|
||||
|
||||
public struct RowConfiguration {
|
||||
public var cell: CellConfiguration
|
||||
public var selection: SelectionConfiguration
|
||||
public var button: ButtonConfiguration
|
||||
public var stepper: StepperConfiguration
|
||||
public var date: DateConfiguration
|
||||
public var userInfo: [String : AnyObject]
|
||||
|
||||
init() {
|
||||
cell = CellConfiguration()
|
||||
selection = SelectionConfiguration()
|
||||
button = ButtonConfiguration()
|
||||
stepper = StepperConfiguration()
|
||||
date = DateConfiguration()
|
||||
userInfo = [:]
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public let tag: String
|
||||
public let type: RowType
|
||||
|
||||
public var title: String?
|
||||
|
||||
public var value: AnyObject? {
|
||||
willSet {
|
||||
guard let willUpdateBlock = configuration.cell.willUpdateClosure else { return }
|
||||
willUpdateBlock(self)
|
||||
}
|
||||
didSet {
|
||||
guard let didUpdateBlock = configuration.cell.didUpdateClosure else { return }
|
||||
didUpdateBlock(self)
|
||||
}
|
||||
}
|
||||
|
||||
public var configuration: RowConfiguration
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init(tag: String, type: RowType, title: String, configuration: RowConfiguration) {
|
||||
self.tag = tag
|
||||
self.type = type
|
||||
self.title = title
|
||||
self.configuration = configuration
|
||||
}
|
||||
|
||||
public init(tag: String, type: RowType, title: String) {
|
||||
self.tag = tag
|
||||
self.type = type
|
||||
self.title = title
|
||||
self.configuration = RowConfiguration()
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
//
|
||||
// FormSectionDescriptor.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public final class FormSectionDescriptor {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public var rows: [FormRowDescriptor] = []
|
||||
|
||||
public var headerTitle: String?
|
||||
public var footerTitle: String?
|
||||
|
||||
public var headerView: UIView?
|
||||
public var footerView: UIView?
|
||||
|
||||
public var headerViewHeight: CGFloat = UITableViewAutomaticDimension
|
||||
public var footerViewHeight: CGFloat = UITableViewAutomaticDimension
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init(headerTitle: String?, footerTitle: String?) {
|
||||
self.headerTitle = headerTitle
|
||||
self.footerTitle = footerTitle
|
||||
}
|
||||
}
|
||||
@@ -1,622 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0C9D1DF31D2267EE00909941 /* FormOptionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C9D1DF21D2267EE00909941 /* FormOptionsViewController.swift */; };
|
||||
0CB1F6C31C37F9B900CD2A7B /* FormErrorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CB1F6C21C37F9B900CD2A7B /* FormErrorType.swift */; };
|
||||
0CCA33DD1B04FA5A006D9666 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA33DC1B04FA5A006D9666 /* AppDelegate.swift */; };
|
||||
0CCA33DF1B04FA5A006D9666 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA33DE1B04FA5A006D9666 /* ViewController.swift */; };
|
||||
0CCA33E21B04FA5A006D9666 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0CCA33E01B04FA5A006D9666 /* Main.storyboard */; };
|
||||
0CCA33E41B04FA5A006D9666 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0CCA33E31B04FA5A006D9666 /* Images.xcassets */; };
|
||||
0CCA34141B04FAD3006D9666 /* ExampleFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA33FC1B04FAD3006D9666 /* ExampleFormViewController.swift */; };
|
||||
0CCA34311B04FBE0006D9666 /* SwiftForms.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CCA34301B04FBE0006D9666 /* SwiftForms.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
0CCA34431B04FBE0006D9666 /* SwiftForms.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */; };
|
||||
0CCA34441B04FBE0006D9666 /* SwiftForms.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
0CCA34611B0502B5006D9666 /* Launch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0CCA34601B0502B5006D9666 /* Launch.storyboard */; };
|
||||
0CCA34781B050525006D9666 /* FormBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34641B050525006D9666 /* FormBaseCell.swift */; };
|
||||
0CCA34791B050525006D9666 /* FormTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34651B050525006D9666 /* FormTitleCell.swift */; };
|
||||
0CCA347A1B050525006D9666 /* FormValueCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34661B050525006D9666 /* FormValueCell.swift */; };
|
||||
0CCA347B1B050525006D9666 /* FormButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34671B050525006D9666 /* FormButtonCell.swift */; };
|
||||
0CCA347C1B050525006D9666 /* FormCheckCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34681B050525006D9666 /* FormCheckCell.swift */; };
|
||||
0CCA347D1B050525006D9666 /* FormDateCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34691B050525006D9666 /* FormDateCell.swift */; };
|
||||
0CCA347E1B050525006D9666 /* FormPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346A1B050525006D9666 /* FormPickerCell.swift */; };
|
||||
0CCA347F1B050525006D9666 /* FormSegmentedControlCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346B1B050525006D9666 /* FormSegmentedControlCell.swift */; };
|
||||
0CCA34801B050525006D9666 /* FormSelectorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346C1B050525006D9666 /* FormSelectorCell.swift */; };
|
||||
0CCA34811B050525006D9666 /* FormSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346D1B050525006D9666 /* FormSwitchCell.swift */; };
|
||||
0CCA34821B050525006D9666 /* FormTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346E1B050525006D9666 /* FormTextFieldCell.swift */; };
|
||||
0CCA34831B050525006D9666 /* FormTextViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346F1B050525006D9666 /* FormTextViewCell.swift */; };
|
||||
0CCA34851B050525006D9666 /* FormSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34721B050525006D9666 /* FormSelector.swift */; };
|
||||
0CCA34861B050525006D9666 /* FormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34731B050525006D9666 /* FormViewController.swift */; };
|
||||
0CCA34871B050525006D9666 /* FormDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34751B050525006D9666 /* FormDescriptor.swift */; };
|
||||
0CCA34881B050525006D9666 /* FormRowDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34761B050525006D9666 /* FormRowDescriptor.swift */; };
|
||||
0CCA34891B050525006D9666 /* FormSectionDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34771B050525006D9666 /* FormSectionDescriptor.swift */; };
|
||||
0CDBB4F11B10699A00BE6ACF /* FormStepperCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CDBB4F01B10699A00BE6ACF /* FormStepperCell.swift */; };
|
||||
0CDBB4F31B10724600BE6ACF /* FormSliderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CDBB4F21B10724600BE6ACF /* FormSliderCell.swift */; };
|
||||
BDD1087A1C925D14000EDEE5 /* FormLabelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD108791C925D14000EDEE5 /* FormLabelCell.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
0CCA34411B04FBE0006D9666 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0CCA33CF1B04FA5A006D9666 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 0CCA342B1B04FBDF006D9666;
|
||||
remoteInfo = SwiftForms;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
0CCA34481B04FBE0006D9666 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
0CCA34441B04FBE0006D9666 /* SwiftForms.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0C9D1DF21D2267EE00909941 /* FormOptionsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormOptionsViewController.swift; sourceTree = "<group>"; };
|
||||
0CB1F6C21C37F9B900CD2A7B /* FormErrorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormErrorType.swift; sourceTree = "<group>"; };
|
||||
0CCA33D71B04FA5A006D9666 /* SwiftFormsApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftFormsApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0CCA33DB1B04FA5A006D9666 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0CCA33DC1B04FA5A006D9666 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
0CCA33DE1B04FA5A006D9666 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
0CCA33E11B04FA5A006D9666 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
0CCA33E31B04FA5A006D9666 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
0CCA33FC1B04FAD3006D9666 /* ExampleFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleFormViewController.swift; sourceTree = "<group>"; };
|
||||
0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftForms.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0CCA342F1B04FBE0006D9666 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0CCA34301B04FBE0006D9666 /* SwiftForms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwiftForms.h; sourceTree = "<group>"; };
|
||||
0CCA343E1B04FBE0006D9666 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0CCA343F1B04FBE0006D9666 /* SwiftFormsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftFormsTests.swift; sourceTree = "<group>"; };
|
||||
0CCA34601B0502B5006D9666 /* Launch.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Launch.storyboard; sourceTree = "<group>"; };
|
||||
0CCA34641B050525006D9666 /* FormBaseCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormBaseCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34651B050525006D9666 /* FormTitleCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTitleCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34661B050525006D9666 /* FormValueCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValueCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34671B050525006D9666 /* FormButtonCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormButtonCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34681B050525006D9666 /* FormCheckCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormCheckCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34691B050525006D9666 /* FormDateCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormDateCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346A1B050525006D9666 /* FormPickerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormPickerCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346B1B050525006D9666 /* FormSegmentedControlCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSegmentedControlCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346C1B050525006D9666 /* FormSelectorCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSelectorCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346D1B050525006D9666 /* FormSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSwitchCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346E1B050525006D9666 /* FormTextFieldCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTextFieldCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346F1B050525006D9666 /* FormTextViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTextViewCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34721B050525006D9666 /* FormSelector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSelector.swift; sourceTree = "<group>"; };
|
||||
0CCA34731B050525006D9666 /* FormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormViewController.swift; sourceTree = "<group>"; };
|
||||
0CCA34751B050525006D9666 /* FormDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormDescriptor.swift; sourceTree = "<group>"; };
|
||||
0CCA34761B050525006D9666 /* FormRowDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormRowDescriptor.swift; sourceTree = "<group>"; };
|
||||
0CCA34771B050525006D9666 /* FormSectionDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSectionDescriptor.swift; sourceTree = "<group>"; };
|
||||
0CDBB4F01B10699A00BE6ACF /* FormStepperCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormStepperCell.swift; sourceTree = "<group>"; };
|
||||
0CDBB4F21B10724600BE6ACF /* FormSliderCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSliderCell.swift; sourceTree = "<group>"; };
|
||||
BDD108791C925D14000EDEE5 /* FormLabelCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormLabelCell.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0CCA33D41B04FA5A006D9666 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA34431B04FBE0006D9666 /* SwiftForms.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0CCA34281B04FBDF006D9666 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0CCA33CE1B04FA5A006D9666 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33D91B04FA5A006D9666 /* SwiftFormsApplication */,
|
||||
0CCA342D1B04FBE0006D9666 /* SwiftForms */,
|
||||
0CCA343C1B04FBE0006D9666 /* SwiftFormsTests */,
|
||||
0CCA33D81B04FA5A006D9666 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA33D81B04FA5A006D9666 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33D71B04FA5A006D9666 /* SwiftFormsApplication.app */,
|
||||
0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA33D91B04FA5A006D9666 /* SwiftFormsApplication */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33FC1B04FAD3006D9666 /* ExampleFormViewController.swift */,
|
||||
0CCA33DC1B04FA5A006D9666 /* AppDelegate.swift */,
|
||||
0CCA33DE1B04FA5A006D9666 /* ViewController.swift */,
|
||||
0CCA33E01B04FA5A006D9666 /* Main.storyboard */,
|
||||
0CCA33E31B04FA5A006D9666 /* Images.xcassets */,
|
||||
0CCA33DA1B04FA5A006D9666 /* Supporting Files */,
|
||||
0CCA34601B0502B5006D9666 /* Launch.storyboard */,
|
||||
);
|
||||
path = SwiftFormsApplication;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA33DA1B04FA5A006D9666 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33DB1B04FA5A006D9666 /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA342D1B04FBE0006D9666 /* SwiftForms */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34621B050525006D9666 /* cells */,
|
||||
0CCA34701B050525006D9666 /* controllers */,
|
||||
0CCA34741B050525006D9666 /* descriptors */,
|
||||
0CB1F6C21C37F9B900CD2A7B /* FormErrorType.swift */,
|
||||
0CCA34301B04FBE0006D9666 /* SwiftForms.h */,
|
||||
0CCA342E1B04FBE0006D9666 /* Supporting Files */,
|
||||
);
|
||||
path = SwiftForms;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA342E1B04FBE0006D9666 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA342F1B04FBE0006D9666 /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA343C1B04FBE0006D9666 /* SwiftFormsTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA343F1B04FBE0006D9666 /* SwiftFormsTests.swift */,
|
||||
0CCA343D1B04FBE0006D9666 /* Supporting Files */,
|
||||
);
|
||||
path = SwiftFormsTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA343D1B04FBE0006D9666 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA343E1B04FBE0006D9666 /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34621B050525006D9666 /* cells */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34631B050525006D9666 /* base */,
|
||||
0CCA34671B050525006D9666 /* FormButtonCell.swift */,
|
||||
BDD108791C925D14000EDEE5 /* FormLabelCell.swift */,
|
||||
0CCA34681B050525006D9666 /* FormCheckCell.swift */,
|
||||
0CCA34691B050525006D9666 /* FormDateCell.swift */,
|
||||
0CCA346A1B050525006D9666 /* FormPickerCell.swift */,
|
||||
0CCA346B1B050525006D9666 /* FormSegmentedControlCell.swift */,
|
||||
0CCA346C1B050525006D9666 /* FormSelectorCell.swift */,
|
||||
0CCA346D1B050525006D9666 /* FormSwitchCell.swift */,
|
||||
0CCA346E1B050525006D9666 /* FormTextFieldCell.swift */,
|
||||
0CCA346F1B050525006D9666 /* FormTextViewCell.swift */,
|
||||
0CDBB4F01B10699A00BE6ACF /* FormStepperCell.swift */,
|
||||
0CDBB4F21B10724600BE6ACF /* FormSliderCell.swift */,
|
||||
);
|
||||
path = cells;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34631B050525006D9666 /* base */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34641B050525006D9666 /* FormBaseCell.swift */,
|
||||
0CCA34651B050525006D9666 /* FormTitleCell.swift */,
|
||||
0CCA34661B050525006D9666 /* FormValueCell.swift */,
|
||||
);
|
||||
path = base;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34701B050525006D9666 /* controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34721B050525006D9666 /* FormSelector.swift */,
|
||||
0CCA34731B050525006D9666 /* FormViewController.swift */,
|
||||
0C9D1DF21D2267EE00909941 /* FormOptionsViewController.swift */,
|
||||
);
|
||||
path = controllers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34741B050525006D9666 /* descriptors */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34751B050525006D9666 /* FormDescriptor.swift */,
|
||||
0CCA34761B050525006D9666 /* FormRowDescriptor.swift */,
|
||||
0CCA34771B050525006D9666 /* FormSectionDescriptor.swift */,
|
||||
);
|
||||
path = descriptors;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
0CCA34291B04FBDF006D9666 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA34311B04FBE0006D9666 /* SwiftForms.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
0CCA33D61B04FA5A006D9666 /* SwiftFormsApplication */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0CCA33F61B04FA5A006D9666 /* Build configuration list for PBXNativeTarget "SwiftFormsApplication" */;
|
||||
buildPhases = (
|
||||
0CCA33D31B04FA5A006D9666 /* Sources */,
|
||||
0CCA33D41B04FA5A006D9666 /* Frameworks */,
|
||||
0CCA33D51B04FA5A006D9666 /* Resources */,
|
||||
0CCA34481B04FBE0006D9666 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
0CCA34421B04FBE0006D9666 /* PBXTargetDependency */,
|
||||
);
|
||||
name = SwiftFormsApplication;
|
||||
productName = SwiftFormsApplication;
|
||||
productReference = 0CCA33D71B04FA5A006D9666 /* SwiftFormsApplication.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
0CCA342B1B04FBDF006D9666 /* SwiftForms */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0CCA34451B04FBE0006D9666 /* Build configuration list for PBXNativeTarget "SwiftForms" */;
|
||||
buildPhases = (
|
||||
0CCA34271B04FBDF006D9666 /* Sources */,
|
||||
0CCA34281B04FBDF006D9666 /* Frameworks */,
|
||||
0CCA34291B04FBDF006D9666 /* Headers */,
|
||||
0CCA342A1B04FBDF006D9666 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = SwiftForms;
|
||||
productName = SwiftForms;
|
||||
productReference = 0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0CCA33CF1B04FA5A006D9666 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftMigration = 0700;
|
||||
LastSwiftUpdateCheck = 0700;
|
||||
LastUpgradeCheck = 0800;
|
||||
ORGANIZATIONNAME = "Miguel Angel Ortuno Ortuno";
|
||||
TargetAttributes = {
|
||||
0CCA33D61B04FA5A006D9666 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
0CCA342B1B04FBDF006D9666 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 0CCA33D21B04FA5A006D9666 /* Build configuration list for PBXProject "SwiftFormsApplication" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 0CCA33CE1B04FA5A006D9666;
|
||||
productRefGroup = 0CCA33D81B04FA5A006D9666 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
0CCA33D61B04FA5A006D9666 /* SwiftFormsApplication */,
|
||||
0CCA342B1B04FBDF006D9666 /* SwiftForms */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
0CCA33D51B04FA5A006D9666 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA33E21B04FA5A006D9666 /* Main.storyboard in Resources */,
|
||||
0CCA34611B0502B5006D9666 /* Launch.storyboard in Resources */,
|
||||
0CCA33E41B04FA5A006D9666 /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0CCA342A1B04FBDF006D9666 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
0CCA33D31B04FA5A006D9666 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA33DF1B04FA5A006D9666 /* ViewController.swift in Sources */,
|
||||
0CCA34141B04FAD3006D9666 /* ExampleFormViewController.swift in Sources */,
|
||||
0CCA33DD1B04FA5A006D9666 /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0CCA34271B04FBDF006D9666 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA34851B050525006D9666 /* FormSelector.swift in Sources */,
|
||||
0CCA34791B050525006D9666 /* FormTitleCell.swift in Sources */,
|
||||
0CDBB4F31B10724600BE6ACF /* FormSliderCell.swift in Sources */,
|
||||
0CCA34891B050525006D9666 /* FormSectionDescriptor.swift in Sources */,
|
||||
0CCA34871B050525006D9666 /* FormDescriptor.swift in Sources */,
|
||||
0CCA34781B050525006D9666 /* FormBaseCell.swift in Sources */,
|
||||
BDD1087A1C925D14000EDEE5 /* FormLabelCell.swift in Sources */,
|
||||
0CCA34831B050525006D9666 /* FormTextViewCell.swift in Sources */,
|
||||
0CB1F6C31C37F9B900CD2A7B /* FormErrorType.swift in Sources */,
|
||||
0CCA34861B050525006D9666 /* FormViewController.swift in Sources */,
|
||||
0CCA347B1B050525006D9666 /* FormButtonCell.swift in Sources */,
|
||||
0CDBB4F11B10699A00BE6ACF /* FormStepperCell.swift in Sources */,
|
||||
0CCA34801B050525006D9666 /* FormSelectorCell.swift in Sources */,
|
||||
0CCA34811B050525006D9666 /* FormSwitchCell.swift in Sources */,
|
||||
0CCA347C1B050525006D9666 /* FormCheckCell.swift in Sources */,
|
||||
0CCA347A1B050525006D9666 /* FormValueCell.swift in Sources */,
|
||||
0CCA347F1B050525006D9666 /* FormSegmentedControlCell.swift in Sources */,
|
||||
0CCA34821B050525006D9666 /* FormTextFieldCell.swift in Sources */,
|
||||
0CCA347E1B050525006D9666 /* FormPickerCell.swift in Sources */,
|
||||
0C9D1DF31D2267EE00909941 /* FormOptionsViewController.swift in Sources */,
|
||||
0CCA347D1B050525006D9666 /* FormDateCell.swift in Sources */,
|
||||
0CCA34881B050525006D9666 /* FormRowDescriptor.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
0CCA34421B04FBE0006D9666 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 0CCA342B1B04FBDF006D9666 /* SwiftForms */;
|
||||
targetProxy = 0CCA34411B04FBE0006D9666 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
0CCA33E01B04FA5A006D9666 /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0CCA33E11B04FA5A006D9666 /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
0CCA33F41B04FA5A006D9666 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0CCA33F51B04FA5A006D9666 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0CCA33F71B04FA5A006D9666 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = SwiftFormsApplication/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ortulabs.SwiftFormsApplication;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0CCA33F81B04FA5A006D9666 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = SwiftFormsApplication/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ortulabs.SwiftFormsApplication;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0CCA34461B04FBE0006D9666 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = SwiftForms/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ortulabs.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 3.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0CCA34471B04FBE0006D9666 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = SwiftForms/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ortulabs.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 3.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
0CCA33D21B04FA5A006D9666 /* Build configuration list for PBXProject "SwiftFormsApplication" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0CCA33F41B04FA5A006D9666 /* Debug */,
|
||||
0CCA33F51B04FA5A006D9666 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0CCA33F61B04FA5A006D9666 /* Build configuration list for PBXNativeTarget "SwiftFormsApplication" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0CCA33F71B04FA5A006D9666 /* Debug */,
|
||||
0CCA33F81B04FA5A006D9666 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0CCA34451B04FBE0006D9666 /* Build configuration list for PBXNativeTarget "SwiftForms" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0CCA34461B04FBE0006D9666 /* Debug */,
|
||||
0CCA34471B04FBE0006D9666 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0CCA33CF1B04FA5A006D9666 /* Project object */;
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0800"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0CCA342B1B04FBDF006D9666"
|
||||
BuildableName = "SwiftForms.framework"
|
||||
BlueprintName = "SwiftForms"
|
||||
ReferencedContainer = "container:SwiftFormsApplication.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0CCA342B1B04FBDF006D9666"
|
||||
BuildableName = "SwiftForms.framework"
|
||||
BlueprintName = "SwiftForms"
|
||||
ReferencedContainer = "container:SwiftFormsApplication.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0CCA342B1B04FBDF006D9666"
|
||||
BuildableName = "SwiftForms.framework"
|
||||
BlueprintName = "SwiftForms"
|
||||
ReferencedContainer = "container:SwiftFormsApplication.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,35 +0,0 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : Any]?) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func applicationWillResignActive(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationDidEnterBackground(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationWillTerminate(_ application: UIApplication) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="2fJ-Vj-Fx4">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Root View Controller-->
|
||||
<scene sceneID="prn-mK-S9o">
|
||||
<objects>
|
||||
<tableViewController id="cOw-JX-PpI" customClass="ExampleFormViewController" customModule="SwiftFormsApplication" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="Dpr-KM-eKs">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="518"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="cOw-JX-PpI" id="zuU-br-WUC"/>
|
||||
<outlet property="delegate" destination="cOw-JX-PpI" id="2Oh-6L-e8h"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<navigationItem key="navigationItem" title="Root View Controller" id="W98-Fb-phH"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<size key="freeformSize" width="320" height="518"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="ndw-47-Ukh" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-166" y="423.75"/>
|
||||
</scene>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="4el-7P-abp">
|
||||
<objects>
|
||||
<navigationController id="2fJ-Vj-Fx4" sceneMemberID="viewController">
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<size key="freeformSize" width="320" height="518"/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="l3z-Dv-0Yo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="cOw-JX-PpI" kind="relationship" relationship="rootViewController" id="nL3-AH-WsZ"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="k9y-Jx-GyC" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-816" y="424"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.1 MiB |
@@ -1,211 +0,0 @@
|
||||
//
|
||||
// ExampleFormViewController.swift
|
||||
// SwiftForms
|
||||
//®
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import SwiftForms
|
||||
|
||||
class ExampleFormViewController: FormViewController {
|
||||
|
||||
struct Static {
|
||||
static let nameTag = "name"
|
||||
static let passwordTag = "password"
|
||||
static let lastNameTag = "lastName"
|
||||
static let jobTag = "job"
|
||||
static let emailTag = "email"
|
||||
static let URLTag = "url"
|
||||
static let phoneTag = "phone"
|
||||
static let enabled = "enabled"
|
||||
static let check = "check"
|
||||
static let segmented = "segmented"
|
||||
static let picker = "picker"
|
||||
static let birthday = "birthday"
|
||||
static let categories = "categories"
|
||||
static let button = "button"
|
||||
static let stepper = "stepper"
|
||||
static let slider = "slider"
|
||||
static let textView = "textview"
|
||||
}
|
||||
|
||||
required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
self.loadForm()
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Submit", style: .plain, target: self, action: #selector(ExampleFormViewController.submit(_:)))
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
func submit(_: UIBarButtonItem!) {
|
||||
|
||||
let message = self.form.formValues().description
|
||||
|
||||
let alertController = UIAlertController(title: "Form output", message: message, preferredStyle: .alert)
|
||||
|
||||
let cancel = UIAlertAction(title: "OK", style: .cancel) { (action) in
|
||||
}
|
||||
|
||||
alertController.addAction(cancel)
|
||||
|
||||
self.present(alertController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
// MARK: Private interface
|
||||
|
||||
fileprivate func loadForm() {
|
||||
|
||||
let form = FormDescriptor(title: "Example Form")
|
||||
|
||||
let section1 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
var row = FormRowDescriptor(tag: Static.emailTag, type: .email, title: "Email")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "john@gmail.com" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section1.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.passwordTag, type: .password, title: "Password")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "Enter password" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section1.rows.append(row)
|
||||
|
||||
let section2 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.nameTag, type: .name, title: "First Name")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. Miguel Ángel" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section2.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.lastNameTag, type: .name, title: "Last Name")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. Ortuño" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section2.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.jobTag, type: .text, title: "Job")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. Entrepreneur" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section2.rows.append(row)
|
||||
|
||||
let section3 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.URLTag, type: .url, title: "URL")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. gethooksapp.com" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section3.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.phoneTag, type: .phone, title: "Phone")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. 0034666777999" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section3.rows.append(row)
|
||||
|
||||
let section4 = FormSectionDescriptor(headerTitle: "An example header title", footerTitle: "An example footer title")
|
||||
|
||||
row = FormRowDescriptor(tag: Static.enabled, type: .booleanSwitch, title: "Enable")
|
||||
section4.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.check, type: .booleanCheck, title: "Doable")
|
||||
section4.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.segmented, type: .segmentedControl, title: "Priority")
|
||||
row.configuration.selection.options = ([0, 1, 2, 3] as [Int]) as [AnyObject]
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? Int else { return "" }
|
||||
switch option {
|
||||
case 0:
|
||||
return "None"
|
||||
case 1:
|
||||
return "!"
|
||||
case 2:
|
||||
return "!!"
|
||||
case 3:
|
||||
return "!!!"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
row.configuration.cell.appearance = ["titleLabel.font" : UIFont.boldSystemFont(ofSize: 30.0), "segmentedControl.tintColor" : UIColor.red]
|
||||
|
||||
section4.rows.append(row)
|
||||
|
||||
let section5 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.picker, type: .picker, title: "Gender")
|
||||
row.configuration.cell.showsInputToolbar = true
|
||||
row.configuration.selection.options = (["F", "M", "U"] as [String]) as [AnyObject]
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? String else { return "" }
|
||||
switch option {
|
||||
case "F":
|
||||
return "Female"
|
||||
case "M":
|
||||
return "Male"
|
||||
case "U":
|
||||
return "I'd rather not to say"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
row.value = "M" as AnyObject
|
||||
|
||||
section5.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.birthday, type: .date, title: "Birthday")
|
||||
row.configuration.cell.showsInputToolbar = true
|
||||
section5.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.categories, type: .multipleSelector, title: "Categories")
|
||||
row.configuration.selection.options = ([0, 1, 2, 3, 4] as [Int]) as [AnyObject]
|
||||
row.configuration.selection.allowsMultipleSelection = true
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? Int else { return "" }
|
||||
switch option {
|
||||
case 0:
|
||||
return "Restaurant"
|
||||
case 1:
|
||||
return "Pub"
|
||||
case 2:
|
||||
return "Shop"
|
||||
case 3:
|
||||
return "Hotel"
|
||||
case 4:
|
||||
return "Camping"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
section5.rows.append(row)
|
||||
|
||||
let section6 = FormSectionDescriptor(headerTitle: "Stepper & Slider", footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.stepper, type: .stepper, title: "Step count")
|
||||
row.configuration.stepper.maximumValue = 200.0
|
||||
row.configuration.stepper.minimumValue = 20.0
|
||||
row.configuration.stepper.steps = 2.0
|
||||
section6.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.slider, type: .slider, title: "Slider")
|
||||
row.configuration.stepper.maximumValue = 200.0
|
||||
row.configuration.stepper.minimumValue = 20.0
|
||||
row.configuration.stepper.steps = 2.0
|
||||
row.value = 0.5 as AnyObject
|
||||
section6.rows.append(row)
|
||||
|
||||
let section7 = FormSectionDescriptor(headerTitle: "Multiline TextView", footerTitle: nil)
|
||||
row = FormRowDescriptor(tag: Static.textView, type: .multilineText, title: "Notes")
|
||||
section7.rows.append(row)
|
||||
|
||||
let section8 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.button, type: .button, title: "Dismiss")
|
||||
row.configuration.button.didSelectClosure = { _ in
|
||||
self.view.endEditing(true)
|
||||
}
|
||||
section8.rows.append(row)
|
||||
|
||||
form.sections = [section1, section2, section3, section4, section5, section6, section7, section8]
|
||||
|
||||
self.form = form
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "8.0",
|
||||
"subtype" : "736h",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "8.0",
|
||||
"subtype" : "736h",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "8.0",
|
||||
"subtype" : "667h",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"filename" : "iphone5_splash.png",
|
||||
"minimum-system-version" : "7.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"subtype" : "retina4",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB |
@@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>Launch</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="9SR-7b-Iwg">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="zNr-CX-2hl">
|
||||
<objects>
|
||||
<navigationController id="9SR-7b-Iwg" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="boM-fp-avT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="zU2-zy-5lE" kind="relationship" relationship="rootViewController" id="RaG-Zs-crm"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="rIS-OV-1jL" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-664" y="297"/>
|
||||
</scene>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="9pp-lP-Cyp">
|
||||
<objects>
|
||||
<viewController id="zU2-zy-5lE" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="kba-MB-gng"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="cvL-oJ-V4X"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="2CP-3f-vjZ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="49I-cM-xVU"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ywx-qZ-bIj" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="358" y="297"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 65 KiB |
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// ViewController.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 14/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class ViewController: UIViewController {
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
}
|
||||
|
||||
override func didReceiveMemoryWarning() {
|
||||
super.didReceiveMemoryWarning()
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,55 +3,74 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objectVersion = 48;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
5F28BC9A1E920172000BA78E /* SwiftForms.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F28BC991E920172000BA78E /* SwiftForms.framework */; };
|
||||
5FCEBEBA1E91A00900BA379D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEB91E91A00900BA379D /* AppDelegate.swift */; };
|
||||
5FCEBEC11E91A00900BA379D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5FCEBEC01E91A00900BA379D /* Assets.xcassets */; };
|
||||
5FCEBEC41E91A00900BA379D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FCEBEC21E91A00900BA379D /* LaunchScreen.storyboard */; };
|
||||
5FCEBECF1E91A00900BA379D /* My_MindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBECE1E91A00900BA379D /* My_MindTests.swift */; };
|
||||
5FCEBEDA1E91A00900BA379D /* My_MindUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBED91E91A00900BA379D /* My_MindUITests.swift */; };
|
||||
5FCEBEEA1E91A0B800BA379D /* OnBoard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FCEBEE91E91A0B800BA379D /* OnBoard.storyboard */; };
|
||||
5FCEBEEC1E91A20100BA379D /* OnBoardingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEEB1E91A20100BA379D /* OnBoardingController.swift */; };
|
||||
5FCEBEF11E91A25200BA379D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FCEBEF01E91A25200BA379D /* Main.storyboard */; };
|
||||
5FCEBEF31E91A25900BA379D /* Login.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FCEBEF21E91A25900BA379D /* Login.storyboard */; };
|
||||
5FCEBEF51E91A27B00BA379D /* LoginViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEF41E91A27B00BA379D /* LoginViews.swift */; };
|
||||
5FCEBEF71E91A28800BA379D /* ForumView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEF61E91A28800BA379D /* ForumView.swift */; };
|
||||
5FCEBEF91E91A29D00BA379D /* ReferralViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEF81E91A29D00BA379D /* ReferralViews.swift */; };
|
||||
5FCEBEFB1E91A2A400BA379D /* AppointmentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEFA1E91A2A400BA379D /* AppointmentView.swift */; };
|
||||
5FCEBEFD1E91A2B200BA379D /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEFC1E91A2B200BA379D /* SettingsView.swift */; };
|
||||
5FCEBEFF1E91A2BB00BA379D /* EmergencyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBEFE1E91A2BB00BA379D /* EmergencyView.swift */; };
|
||||
5FCEBF011E91A74100BA379D /* SignUpViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBF001E91A74100BA379D /* SignUpViews.swift */; };
|
||||
5FCEBF051E91A81000BA379D /* WelcomeScreenViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCEBF041E91A81000BA379D /* WelcomeScreenViews.swift */; };
|
||||
5FE993361E92C3D4002B0FF6 /* OnlineViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FE993351E92C3D4002B0FF6 /* OnlineViews.swift */; };
|
||||
5F3156141E8EE8670010FE7D /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D6F1E8DB2F100BCE63D /* libsqlite3.tbd */; };
|
||||
5F3156151E8EE8670010FE7D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D701E8DB2F100BCE63D /* libz.tbd */; };
|
||||
5F5A1D291E8DB0F300BCE63D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A1D281E8DB0F300BCE63D /* AppDelegate.swift */; };
|
||||
5F5A1D2E1E8DB0F300BCE63D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A1D2C1E8DB0F300BCE63D /* Main.storyboard */; };
|
||||
5F5A1D301E8DB0F300BCE63D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A1D2F1E8DB0F300BCE63D /* Assets.xcassets */; };
|
||||
5F5A1D331E8DB0F300BCE63D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A1D311E8DB0F300BCE63D /* LaunchScreen.storyboard */; };
|
||||
5F5A1D3E1E8DB0F300BCE63D /* My_MindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A1D3D1E8DB0F300BCE63D /* My_MindTests.swift */; };
|
||||
5F5A1D491E8DB0F300BCE63D /* My_MindUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A1D481E8DB0F300BCE63D /* My_MindUITests.swift */; };
|
||||
5F5A1D571E8DB24C00BCE63D /* Sdk in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A1D561E8DB24C00BCE63D /* Sdk */; };
|
||||
5F5A1D5D1E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D581E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework */; };
|
||||
5F5A1D5E1E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D581E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
5F5A1D5F1E8DB26200BCE63D /* AWSCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D591E8DB26200BCE63D /* AWSCore.framework */; };
|
||||
5F5A1D601E8DB26200BCE63D /* AWSCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D591E8DB26200BCE63D /* AWSCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
5F5A1D611E8DB26200BCE63D /* AWSPinpoint.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D5A1E8DB26200BCE63D /* AWSPinpoint.framework */; };
|
||||
5F5A1D621E8DB26200BCE63D /* AWSPinpoint.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D5A1E8DB26200BCE63D /* AWSPinpoint.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
5F5A1D631E8DB26200BCE63D /* AWSS3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D5B1E8DB26200BCE63D /* AWSS3.framework */; };
|
||||
5F5A1D641E8DB26200BCE63D /* AWSS3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D5B1E8DB26200BCE63D /* AWSS3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
5F5A1D6B1E8DB2A300BCE63D /* AWSConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A1D681E8DB2A300BCE63D /* AWSConfiguration.swift */; };
|
||||
5F5A1D6C1E8DB2A300BCE63D /* AWSMobileClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A1D691E8DB2A300BCE63D /* AWSMobileClient.swift */; };
|
||||
5F5A1D6D1E8DB2A300BCE63D /* AWSMobileHubHelper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F5A1D6A1E8DB2A300BCE63D /* AWSMobileHubHelper.framework */; };
|
||||
5FDAA1351E946EDE00FF80D4 /* TabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDAA1341E946EDE00FF80D4 /* TabBarController.swift */; };
|
||||
5FF72FEF1E8DDECA00FFD64D /* SignInViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF72FE81E8DDECA00FFD64D /* SignInViewControllerExtensions.swift */; };
|
||||
5FF72FF01E8DDECA00FFD64D /* UserPoolForgotPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF72FE91E8DDECA00FFD64D /* UserPoolForgotPasswordViewController.swift */; };
|
||||
5FF72FF11E8DDECA00FFD64D /* UserPoolMFAViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF72FEA1E8DDECA00FFD64D /* UserPoolMFAViewController.swift */; };
|
||||
5FF72FF21E8DDECA00FFD64D /* UserPoolNewPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF72FEB1E8DDECA00FFD64D /* UserPoolNewPasswordViewController.swift */; };
|
||||
5FF72FF41E8DDECA00FFD64D /* UserPoolSignUpConfirmationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF72FED1E8DDECA00FFD64D /* UserPoolSignUpConfirmationViewController.swift */; };
|
||||
5FF72FF51E8DDECA00FFD64D /* UserPoolSignUpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF72FEE1E8DDECA00FFD64D /* UserPoolSignUpViewController.swift */; };
|
||||
5FF9721B1E8DBA98007AE280 /* OnBoardingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF9721A1E8DBA98007AE280 /* OnBoardingController.swift */; };
|
||||
5FF9721E1E8DBAC3007AE280 /* WelcomeScreenOne.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF9721D1E8DBAC3007AE280 /* WelcomeScreenOne.swift */; };
|
||||
5FF972201E8DBAD9007AE280 /* WelcomeScreenTwo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF9721F1E8DBAD9007AE280 /* WelcomeScreenTwo.swift */; };
|
||||
5FF972221E8DBAE1007AE280 /* WelcomeScreenThree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF972211E8DBAE1007AE280 /* WelcomeScreenThree.swift */; };
|
||||
5FF972281E8DC9F3007AE280 /* ForumView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF972271E8DC9F3007AE280 /* ForumView.swift */; };
|
||||
5FF9722A1E8DCE83007AE280 /* UserViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF972291E8DCE83007AE280 /* UserViews.swift */; };
|
||||
5FF9722D1E8DCEA7007AE280 /* SignUpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF9722C1E8DCEA7007AE280 /* SignUpView.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
5FCEBECB1E91A00900BA379D /* PBXContainerItemProxy */ = {
|
||||
5F5A1D3A1E8DB0F300BCE63D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 5FCEBEAE1E91A00900BA379D /* Project object */;
|
||||
containerPortal = 5F5A1D1D1E8DB0F300BCE63D /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5FCEBEB51E91A00900BA379D;
|
||||
remoteGlobalIDString = 5F5A1D241E8DB0F300BCE63D;
|
||||
remoteInfo = "My Mind";
|
||||
};
|
||||
5FCEBED61E91A00900BA379D /* PBXContainerItemProxy */ = {
|
||||
5F5A1D451E8DB0F300BCE63D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 5FCEBEAE1E91A00900BA379D /* Project object */;
|
||||
containerPortal = 5F5A1D1D1E8DB0F300BCE63D /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5FCEBEB51E91A00900BA379D;
|
||||
remoteGlobalIDString = 5F5A1D241E8DB0F300BCE63D;
|
||||
remoteInfo = "My Mind";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
5FA02E161E91F52C00C6F0A5 /* Embed Frameworks */ = {
|
||||
5F5A1D651E8DB26200BCE63D /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
5F5A1D641E8DB26200BCE63D /* AWSS3.framework in Embed Frameworks */,
|
||||
5F5A1D5E1E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework in Embed Frameworks */,
|
||||
5F5A1D601E8DB26200BCE63D /* AWSCore.framework in Embed Frameworks */,
|
||||
5F5A1D621E8DB26200BCE63D /* AWSPinpoint.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -59,56 +78,69 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4D61387F6D0645AD417E6994 /* Pods_My_Mind.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_My_Mind.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4EB7D250E5F6F6ED4ECEE61D /* Pods-My Mind.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My Mind.release.xcconfig"; path = "Pods/Target Support Files/Pods-My Mind/Pods-My Mind.release.xcconfig"; sourceTree = "<group>"; };
|
||||
5F28BC991E920172000BA78E /* SwiftForms.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SwiftForms.framework; sourceTree = "<group>"; };
|
||||
5FCEBEB61E91A00900BA379D /* My Mind.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "My Mind.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5FCEBEB91E91A00900BA379D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
5FCEBEC01E91A00900BA379D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
5FCEBEC31E91A00900BA379D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
5FCEBEC51E91A00900BA379D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5FCEBECA1E91A00900BA379D /* My MindTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "My MindTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5FCEBECE1E91A00900BA379D /* My_MindTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = My_MindTests.swift; sourceTree = "<group>"; };
|
||||
5FCEBED01E91A00900BA379D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5FCEBED51E91A00900BA379D /* My MindUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "My MindUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5FCEBED91E91A00900BA379D /* My_MindUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = My_MindUITests.swift; sourceTree = "<group>"; };
|
||||
5FCEBEDB1E91A00900BA379D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5FCEBEE91E91A0B800BA379D /* OnBoard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = OnBoard.storyboard; path = ../OnBoard.storyboard; sourceTree = "<group>"; };
|
||||
5FCEBEEB1E91A20100BA379D /* OnBoardingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OnBoardingController.swift; path = ../OnBoardingController.swift; sourceTree = "<group>"; };
|
||||
5FCEBEF01E91A25200BA379D /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
5FCEBEF21E91A25900BA379D /* Login.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Login.storyboard; sourceTree = "<group>"; };
|
||||
5FCEBEF41E91A27B00BA379D /* LoginViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViews.swift; sourceTree = "<group>"; };
|
||||
5FCEBEF61E91A28800BA379D /* ForumView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForumView.swift; sourceTree = "<group>"; };
|
||||
5FCEBEF81E91A29D00BA379D /* ReferralViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReferralViews.swift; sourceTree = "<group>"; };
|
||||
5FCEBEFA1E91A2A400BA379D /* AppointmentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppointmentView.swift; sourceTree = "<group>"; };
|
||||
5FCEBEFC1E91A2B200BA379D /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
|
||||
5FCEBEFE1E91A2BB00BA379D /* EmergencyView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmergencyView.swift; sourceTree = "<group>"; };
|
||||
5FCEBF001E91A74100BA379D /* SignUpViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignUpViews.swift; sourceTree = "<group>"; };
|
||||
5FCEBF041E91A81000BA379D /* WelcomeScreenViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WelcomeScreenViews.swift; sourceTree = "<group>"; };
|
||||
5FCEBF061E91D95D00BA379D /* My Mind.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "My Mind.entitlements"; sourceTree = "<group>"; };
|
||||
5FE993351E92C3D4002B0FF6 /* OnlineViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnlineViews.swift; sourceTree = "<group>"; };
|
||||
706096029E2D8926F6A27630 /* Pods-My Mind.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My Mind.debug.xcconfig"; path = "Pods/Target Support Files/Pods-My Mind/Pods-My Mind.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
D801D285CF8D71FD32F6DC0E /* Pods_My_MindTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_My_MindTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F44006E7B7F6F6FB9AB0F4C6 /* Pods_My_MindUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_My_MindUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5F5A1D251E8DB0F300BCE63D /* My Mind.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "My Mind.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5F5A1D281E8DB0F300BCE63D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
5F5A1D2D1E8DB0F300BCE63D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
5F5A1D2F1E8DB0F300BCE63D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
5F5A1D321E8DB0F300BCE63D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
5F5A1D341E8DB0F300BCE63D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5F5A1D391E8DB0F300BCE63D /* My MindTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "My MindTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5F5A1D3D1E8DB0F300BCE63D /* My_MindTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = My_MindTests.swift; sourceTree = "<group>"; };
|
||||
5F5A1D3F1E8DB0F300BCE63D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5F5A1D441E8DB0F300BCE63D /* My MindUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "My MindUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5F5A1D481E8DB0F300BCE63D /* My_MindUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = My_MindUITests.swift; sourceTree = "<group>"; };
|
||||
5F5A1D4A1E8DB0F400BCE63D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5F5A1D561E8DB24C00BCE63D /* Sdk */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Sdk; sourceTree = "<group>"; };
|
||||
5F5A1D581E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AWSCognitoIdentityProvider.framework; path = "My Mind/Sdk/Aws/AWSCognitoIdentityProvider.framework"; sourceTree = "<group>"; };
|
||||
5F5A1D591E8DB26200BCE63D /* AWSCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AWSCore.framework; path = "My Mind/Sdk/Aws/AWSCore.framework"; sourceTree = "<group>"; };
|
||||
5F5A1D5A1E8DB26200BCE63D /* AWSPinpoint.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AWSPinpoint.framework; path = "My Mind/Sdk/Aws/AWSPinpoint.framework"; sourceTree = "<group>"; };
|
||||
5F5A1D5B1E8DB26200BCE63D /* AWSS3.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AWSS3.framework; path = "My Mind/Sdk/Aws/AWSS3.framework"; sourceTree = "<group>"; };
|
||||
5F5A1D5C1E8DB26200BCE63D /* extras */ = {isa = PBXFileReference; lastKnownFileType = folder; name = extras; path = "My Mind/Sdk/Aws/extras"; sourceTree = "<group>"; };
|
||||
5F5A1D681E8DB2A300BCE63D /* AWSConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AWSConfiguration.swift; sourceTree = "<group>"; };
|
||||
5F5A1D691E8DB2A300BCE63D /* AWSMobileClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AWSMobileClient.swift; sourceTree = "<group>"; };
|
||||
5F5A1D6A1E8DB2A300BCE63D /* AWSMobileHubHelper.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AWSMobileHubHelper.framework; sourceTree = "<group>"; };
|
||||
5F5A1D6F1E8DB2F100BCE63D /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
|
||||
5F5A1D701E8DB2F100BCE63D /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||
5FB1172E1E8DE5C800BB1B9B /* My Mind.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "My Mind.entitlements"; sourceTree = "<group>"; };
|
||||
5FDAA1341E946EDE00FF80D4 /* TabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarController.swift; sourceTree = "<group>"; };
|
||||
5FF72FE81E8DDECA00FFD64D /* SignInViewControllerExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignInViewControllerExtensions.swift; sourceTree = "<group>"; };
|
||||
5FF72FE91E8DDECA00FFD64D /* UserPoolForgotPasswordViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPoolForgotPasswordViewController.swift; sourceTree = "<group>"; };
|
||||
5FF72FEA1E8DDECA00FFD64D /* UserPoolMFAViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPoolMFAViewController.swift; sourceTree = "<group>"; };
|
||||
5FF72FEB1E8DDECA00FFD64D /* UserPoolNewPasswordViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPoolNewPasswordViewController.swift; sourceTree = "<group>"; };
|
||||
5FF72FED1E8DDECA00FFD64D /* UserPoolSignUpConfirmationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPoolSignUpConfirmationViewController.swift; sourceTree = "<group>"; };
|
||||
5FF72FEE1E8DDECA00FFD64D /* UserPoolSignUpViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPoolSignUpViewController.swift; sourceTree = "<group>"; };
|
||||
5FF9721A1E8DBA98007AE280 /* OnBoardingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnBoardingController.swift; sourceTree = "<group>"; };
|
||||
5FF9721D1E8DBAC3007AE280 /* WelcomeScreenOne.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WelcomeScreenOne.swift; sourceTree = "<group>"; };
|
||||
5FF9721F1E8DBAD9007AE280 /* WelcomeScreenTwo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WelcomeScreenTwo.swift; sourceTree = "<group>"; };
|
||||
5FF972211E8DBAE1007AE280 /* WelcomeScreenThree.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WelcomeScreenThree.swift; sourceTree = "<group>"; };
|
||||
5FF972271E8DC9F3007AE280 /* ForumView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForumView.swift; sourceTree = "<group>"; };
|
||||
5FF972291E8DCE83007AE280 /* UserViews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserViews.swift; sourceTree = "<group>"; };
|
||||
5FF9722C1E8DCEA7007AE280 /* SignUpView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignUpView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
5FCEBEB31E91A00900BA379D /* Frameworks */ = {
|
||||
5F5A1D221E8DB0F300BCE63D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5F28BC9A1E920172000BA78E /* SwiftForms.framework in Frameworks */,
|
||||
5F3156141E8EE8670010FE7D /* libsqlite3.tbd in Frameworks */,
|
||||
5F3156151E8EE8670010FE7D /* libz.tbd in Frameworks */,
|
||||
5F5A1D6D1E8DB2A300BCE63D /* AWSMobileHubHelper.framework in Frameworks */,
|
||||
5F5A1D631E8DB26200BCE63D /* AWSS3.framework in Frameworks */,
|
||||
5F5A1D5D1E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework in Frameworks */,
|
||||
5F5A1D5F1E8DB26200BCE63D /* AWSCore.framework in Frameworks */,
|
||||
5F5A1D611E8DB26200BCE63D /* AWSPinpoint.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FCEBEC71E91A00900BA379D /* Frameworks */ = {
|
||||
5F5A1D361E8DB0F300BCE63D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FCEBED21E91A00900BA379D /* Frameworks */ = {
|
||||
5F5A1D411E8DB0F300BCE63D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -118,129 +150,154 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
2678CCB1C2283411544C78DB /* Frameworks */ = {
|
||||
5F5A1D1C1E8DB0F300BCE63D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5F28BC991E920172000BA78E /* SwiftForms.framework */,
|
||||
4D61387F6D0645AD417E6994 /* Pods_My_Mind.framework */,
|
||||
D801D285CF8D71FD32F6DC0E /* Pods_My_MindTests.framework */,
|
||||
F44006E7B7F6F6FB9AB0F4C6 /* Pods_My_MindUITests.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBEAD1E91A00900BA379D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBEB81E91A00900BA379D /* My Mind */,
|
||||
5FCEBECD1E91A00900BA379D /* My MindTests */,
|
||||
5FCEBED81E91A00900BA379D /* My MindUITests */,
|
||||
5FCEBEB71E91A00900BA379D /* Products */,
|
||||
A5B37CCAF9726F0EEDFD6142 /* Pods */,
|
||||
2678CCB1C2283411544C78DB /* Frameworks */,
|
||||
5F5A1D581E8DB26200BCE63D /* AWSCognitoIdentityProvider.framework */,
|
||||
5F5A1D591E8DB26200BCE63D /* AWSCore.framework */,
|
||||
5F5A1D5A1E8DB26200BCE63D /* AWSPinpoint.framework */,
|
||||
5F5A1D5B1E8DB26200BCE63D /* AWSS3.framework */,
|
||||
5F5A1D5C1E8DB26200BCE63D /* extras */,
|
||||
5F5A1D271E8DB0F300BCE63D /* My Mind */,
|
||||
5F5A1D3C1E8DB0F300BCE63D /* My MindTests */,
|
||||
5F5A1D471E8DB0F300BCE63D /* My MindUITests */,
|
||||
5F5A1D261E8DB0F300BCE63D /* Products */,
|
||||
5F5A1D6E1E8DB2F000BCE63D /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBEB71E91A00900BA379D /* Products */ = {
|
||||
5F5A1D261E8DB0F300BCE63D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBEB61E91A00900BA379D /* My Mind.app */,
|
||||
5FCEBECA1E91A00900BA379D /* My MindTests.xctest */,
|
||||
5FCEBED51E91A00900BA379D /* My MindUITests.xctest */,
|
||||
5F5A1D251E8DB0F300BCE63D /* My Mind.app */,
|
||||
5F5A1D391E8DB0F300BCE63D /* My MindTests.xctest */,
|
||||
5F5A1D441E8DB0F300BCE63D /* My MindUITests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBEB81E91A00900BA379D /* My Mind */ = {
|
||||
5F5A1D271E8DB0F300BCE63D /* My Mind */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBF061E91D95D00BA379D /* My Mind.entitlements */,
|
||||
5FCEBEC51E91A00900BA379D /* Info.plist */,
|
||||
5FCEBEB91E91A00900BA379D /* AppDelegate.swift */,
|
||||
5FCEBEC01E91A00900BA379D /* Assets.xcassets */,
|
||||
5FCEBEC21E91A00900BA379D /* LaunchScreen.storyboard */,
|
||||
5FCEBEEE1E91A21900BA379D /* Login Sequences */,
|
||||
5FCEBEEF1E91A22800BA379D /* Main Sequences */,
|
||||
5FCEBEED1E91A20D00BA379D /* OnBoarding Sequences */,
|
||||
5F5A1D561E8DB24C00BCE63D /* Sdk */,
|
||||
5FB1172E1E8DE5C800BB1B9B /* My Mind.entitlements */,
|
||||
5F5A1D341E8DB0F300BCE63D /* Info.plist */,
|
||||
5F5A1D281E8DB0F300BCE63D /* AppDelegate.swift */,
|
||||
5F5A1D2F1E8DB0F300BCE63D /* Assets.xcassets */,
|
||||
5FDAA1361E9483B200FF80D4 /* Classes */,
|
||||
5F5A1D311E8DB0F300BCE63D /* LaunchScreen.storyboard */,
|
||||
5F5A1D2C1E8DB0F300BCE63D /* Main.storyboard */,
|
||||
);
|
||||
path = "My Mind";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBECD1E91A00900BA379D /* My MindTests */ = {
|
||||
5F5A1D3C1E8DB0F300BCE63D /* My MindTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBECE1E91A00900BA379D /* My_MindTests.swift */,
|
||||
5FCEBED01E91A00900BA379D /* Info.plist */,
|
||||
5F5A1D3D1E8DB0F300BCE63D /* My_MindTests.swift */,
|
||||
5F5A1D3F1E8DB0F300BCE63D /* Info.plist */,
|
||||
);
|
||||
path = "My MindTests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBED81E91A00900BA379D /* My MindUITests */ = {
|
||||
5F5A1D471E8DB0F300BCE63D /* My MindUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBED91E91A00900BA379D /* My_MindUITests.swift */,
|
||||
5FCEBEDB1E91A00900BA379D /* Info.plist */,
|
||||
5F5A1D481E8DB0F300BCE63D /* My_MindUITests.swift */,
|
||||
5F5A1D4A1E8DB0F400BCE63D /* Info.plist */,
|
||||
);
|
||||
path = "My MindUITests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBEED1E91A20D00BA379D /* OnBoarding Sequences */ = {
|
||||
5F5A1D671E8DB2A300BCE63D /* AmazonAws */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBEE91E91A0B800BA379D /* OnBoard.storyboard */,
|
||||
5FCEBEEB1E91A20100BA379D /* OnBoardingController.swift */,
|
||||
5FCEBF041E91A81000BA379D /* WelcomeScreenViews.swift */,
|
||||
5F5A1D681E8DB2A300BCE63D /* AWSConfiguration.swift */,
|
||||
5F5A1D691E8DB2A300BCE63D /* AWSMobileClient.swift */,
|
||||
5F5A1D6A1E8DB2A300BCE63D /* AWSMobileHubHelper.framework */,
|
||||
);
|
||||
name = "OnBoarding Sequences";
|
||||
name = AmazonAws;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBEEE1E91A21900BA379D /* Login Sequences */ = {
|
||||
5F5A1D6E1E8DB2F000BCE63D /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBEF21E91A25900BA379D /* Login.storyboard */,
|
||||
5FCEBEF41E91A27B00BA379D /* LoginViews.swift */,
|
||||
5FCEBF001E91A74100BA379D /* SignUpViews.swift */,
|
||||
5FE993351E92C3D4002B0FF6 /* OnlineViews.swift */,
|
||||
5F5A1D6F1E8DB2F100BCE63D /* libsqlite3.tbd */,
|
||||
5F5A1D701E8DB2F100BCE63D /* libz.tbd */,
|
||||
);
|
||||
name = "Login Sequences";
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FCEBEEF1E91A22800BA379D /* Main Sequences */ = {
|
||||
5FDAA1361E9483B200FF80D4 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FCEBEF01E91A25200BA379D /* Main.storyboard */,
|
||||
5FCEBEFA1E91A2A400BA379D /* AppointmentView.swift */,
|
||||
5FCEBEFE1E91A2BB00BA379D /* EmergencyView.swift */,
|
||||
5FCEBEF61E91A28800BA379D /* ForumView.swift */,
|
||||
5FCEBEF81E91A29D00BA379D /* ReferralViews.swift */,
|
||||
5FCEBEFC1E91A2B200BA379D /* SettingsView.swift */,
|
||||
5F5A1D671E8DB2A300BCE63D /* AmazonAws */,
|
||||
5FF972191E8DBA65007AE280 /* User Controller Group */,
|
||||
5FF972181E8DBA4C007AE280 /* Main Controller Group */,
|
||||
5FF9721C1E8DBAA6007AE280 /* OnBoarding Controller Group */,
|
||||
);
|
||||
name = "Main Sequences";
|
||||
name = Classes;
|
||||
path = AmazonAws;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A5B37CCAF9726F0EEDFD6142 /* Pods */ = {
|
||||
5FF72FE71E8DDECA00FFD64D /* UserPools */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
706096029E2D8926F6A27630 /* Pods-My Mind.debug.xcconfig */,
|
||||
4EB7D250E5F6F6ED4ECEE61D /* Pods-My Mind.release.xcconfig */,
|
||||
5FF72FE81E8DDECA00FFD64D /* SignInViewControllerExtensions.swift */,
|
||||
5FF72FE91E8DDECA00FFD64D /* UserPoolForgotPasswordViewController.swift */,
|
||||
5FF72FEA1E8DDECA00FFD64D /* UserPoolMFAViewController.swift */,
|
||||
5FF72FEB1E8DDECA00FFD64D /* UserPoolNewPasswordViewController.swift */,
|
||||
5FF72FED1E8DDECA00FFD64D /* UserPoolSignUpConfirmationViewController.swift */,
|
||||
5FF72FEE1E8DDECA00FFD64D /* UserPoolSignUpViewController.swift */,
|
||||
);
|
||||
name = Pods;
|
||||
path = UserPools;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FF972181E8DBA4C007AE280 /* Main Controller Group */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FF972271E8DC9F3007AE280 /* ForumView.swift */,
|
||||
5FDAA1341E946EDE00FF80D4 /* TabBarController.swift */,
|
||||
);
|
||||
name = "Main Controller Group";
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FF972191E8DBA65007AE280 /* User Controller Group */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FF972291E8DCE83007AE280 /* UserViews.swift */,
|
||||
5FF9722C1E8DCEA7007AE280 /* SignUpView.swift */,
|
||||
5FF72FE71E8DDECA00FFD64D /* UserPools */,
|
||||
);
|
||||
name = "User Controller Group";
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FF9721C1E8DBAA6007AE280 /* OnBoarding Controller Group */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FF9721A1E8DBA98007AE280 /* OnBoardingController.swift */,
|
||||
5FF9721D1E8DBAC3007AE280 /* WelcomeScreenOne.swift */,
|
||||
5FF9721F1E8DBAD9007AE280 /* WelcomeScreenTwo.swift */,
|
||||
5FF972211E8DBAE1007AE280 /* WelcomeScreenThree.swift */,
|
||||
);
|
||||
name = "OnBoarding Controller Group";
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
5FCEBEB51E91A00900BA379D /* My Mind */ = {
|
||||
5F5A1D241E8DB0F300BCE63D /* My Mind */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5FCEBEDE1E91A00900BA379D /* Build configuration list for PBXNativeTarget "My Mind" */;
|
||||
buildConfigurationList = 5F5A1D4D1E8DB0F400BCE63D /* Build configuration list for PBXNativeTarget "My Mind" */;
|
||||
buildPhases = (
|
||||
C7C5637EC49A098E10C2ABE0 /* [CP] Check Pods Manifest.lock */,
|
||||
5FCEBEB21E91A00900BA379D /* Sources */,
|
||||
5FCEBEB31E91A00900BA379D /* Frameworks */,
|
||||
5FCEBEB41E91A00900BA379D /* Resources */,
|
||||
5FA02E161E91F52C00C6F0A5 /* Embed Frameworks */,
|
||||
72970A95DE21C41243D290B0 /* [CP] Embed Pods Frameworks */,
|
||||
E3E2E445B46619A044835673 /* [CP] Copy Pods Resources */,
|
||||
5F5A1D211E8DB0F300BCE63D /* Sources */,
|
||||
5F5A1D221E8DB0F300BCE63D /* Frameworks */,
|
||||
5F5A1D231E8DB0F300BCE63D /* Resources */,
|
||||
5F5A1D651E8DB26200BCE63D /* Embed Frameworks */,
|
||||
5F5A1D661E8DB27100BCE63D /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -248,58 +305,57 @@
|
||||
);
|
||||
name = "My Mind";
|
||||
productName = "My Mind";
|
||||
productReference = 5FCEBEB61E91A00900BA379D /* My Mind.app */;
|
||||
productReference = 5F5A1D251E8DB0F300BCE63D /* My Mind.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
5FCEBEC91E91A00900BA379D /* My MindTests */ = {
|
||||
5F5A1D381E8DB0F300BCE63D /* My MindTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5FCEBEE11E91A00900BA379D /* Build configuration list for PBXNativeTarget "My MindTests" */;
|
||||
buildConfigurationList = 5F5A1D501E8DB0F400BCE63D /* Build configuration list for PBXNativeTarget "My MindTests" */;
|
||||
buildPhases = (
|
||||
5FCEBEC61E91A00900BA379D /* Sources */,
|
||||
5FCEBEC71E91A00900BA379D /* Frameworks */,
|
||||
5FCEBEC81E91A00900BA379D /* Resources */,
|
||||
5F5A1D351E8DB0F300BCE63D /* Sources */,
|
||||
5F5A1D361E8DB0F300BCE63D /* Frameworks */,
|
||||
5F5A1D371E8DB0F300BCE63D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5FCEBECC1E91A00900BA379D /* PBXTargetDependency */,
|
||||
5F5A1D3B1E8DB0F300BCE63D /* PBXTargetDependency */,
|
||||
);
|
||||
name = "My MindTests";
|
||||
productName = "My MindTests";
|
||||
productReference = 5FCEBECA1E91A00900BA379D /* My MindTests.xctest */;
|
||||
productReference = 5F5A1D391E8DB0F300BCE63D /* My MindTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
5FCEBED41E91A00900BA379D /* My MindUITests */ = {
|
||||
5F5A1D431E8DB0F300BCE63D /* My MindUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5FCEBEE41E91A00900BA379D /* Build configuration list for PBXNativeTarget "My MindUITests" */;
|
||||
buildConfigurationList = 5F5A1D531E8DB0F400BCE63D /* Build configuration list for PBXNativeTarget "My MindUITests" */;
|
||||
buildPhases = (
|
||||
5FCEBED11E91A00900BA379D /* Sources */,
|
||||
5FCEBED21E91A00900BA379D /* Frameworks */,
|
||||
5FCEBED31E91A00900BA379D /* Resources */,
|
||||
5F5A1D401E8DB0F300BCE63D /* Sources */,
|
||||
5F5A1D411E8DB0F300BCE63D /* Frameworks */,
|
||||
5F5A1D421E8DB0F300BCE63D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5FCEBED71E91A00900BA379D /* PBXTargetDependency */,
|
||||
5F5A1D461E8DB0F300BCE63D /* PBXTargetDependency */,
|
||||
);
|
||||
name = "My MindUITests";
|
||||
productName = "My MindUITests";
|
||||
productReference = 5FCEBED51E91A00900BA379D /* My MindUITests.xctest */;
|
||||
productReference = 5F5A1D441E8DB0F300BCE63D /* My MindUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
5FCEBEAE1E91A00900BA379D /* Project object */ = {
|
||||
5F5A1D1D1E8DB0F300BCE63D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0830;
|
||||
LastUpgradeCheck = 0830;
|
||||
ORGANIZATIONNAME = "Alexander Davis";
|
||||
TargetAttributes = {
|
||||
5FCEBEB51E91A00900BA379D = {
|
||||
5F5A1D241E8DB0F300BCE63D = {
|
||||
CreatedOnToolsVersion = 8.3;
|
||||
DevelopmentTeam = 28CC8SCVUN;
|
||||
ProvisioningStyle = Automatic;
|
||||
SystemCapabilities = {
|
||||
com.apple.BackgroundModes = {
|
||||
@@ -313,61 +369,60 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
5FCEBEC91E91A00900BA379D = {
|
||||
5F5A1D381E8DB0F300BCE63D = {
|
||||
CreatedOnToolsVersion = 8.3;
|
||||
DevelopmentTeam = 28CC8SCVUN;
|
||||
ProvisioningStyle = Automatic;
|
||||
TestTargetID = 5FCEBEB51E91A00900BA379D;
|
||||
TestTargetID = 5F5A1D241E8DB0F300BCE63D;
|
||||
};
|
||||
5FCEBED41E91A00900BA379D = {
|
||||
5F5A1D431E8DB0F300BCE63D = {
|
||||
CreatedOnToolsVersion = 8.3;
|
||||
DevelopmentTeam = 28CC8SCVUN;
|
||||
ProvisioningStyle = Automatic;
|
||||
TestTargetID = 5FCEBEB51E91A00900BA379D;
|
||||
TestTargetID = 5F5A1D241E8DB0F300BCE63D;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 5FCEBEB11E91A00900BA379D /* Build configuration list for PBXProject "My Mind" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
buildConfigurationList = 5F5A1D201E8DB0F300BCE63D /* Build configuration list for PBXProject "My Mind" */;
|
||||
compatibilityVersion = "Xcode 8.0";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 5FCEBEAD1E91A00900BA379D;
|
||||
productRefGroup = 5FCEBEB71E91A00900BA379D /* Products */;
|
||||
mainGroup = 5F5A1D1C1E8DB0F300BCE63D;
|
||||
productRefGroup = 5F5A1D261E8DB0F300BCE63D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
5FCEBEB51E91A00900BA379D /* My Mind */,
|
||||
5FCEBEC91E91A00900BA379D /* My MindTests */,
|
||||
5FCEBED41E91A00900BA379D /* My MindUITests */,
|
||||
5F5A1D241E8DB0F300BCE63D /* My Mind */,
|
||||
5F5A1D381E8DB0F300BCE63D /* My MindTests */,
|
||||
5F5A1D431E8DB0F300BCE63D /* My MindUITests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
5FCEBEB41E91A00900BA379D /* Resources */ = {
|
||||
5F5A1D231E8DB0F300BCE63D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FCEBEEA1E91A0B800BA379D /* OnBoard.storyboard in Resources */,
|
||||
5FCEBEC41E91A00900BA379D /* LaunchScreen.storyboard in Resources */,
|
||||
5FCEBEC11E91A00900BA379D /* Assets.xcassets in Resources */,
|
||||
5FCEBEF31E91A25900BA379D /* Login.storyboard in Resources */,
|
||||
5FCEBEF11E91A25200BA379D /* Main.storyboard in Resources */,
|
||||
5F5A1D331E8DB0F300BCE63D /* LaunchScreen.storyboard in Resources */,
|
||||
5F5A1D571E8DB24C00BCE63D /* Sdk in Resources */,
|
||||
5F5A1D301E8DB0F300BCE63D /* Assets.xcassets in Resources */,
|
||||
5F5A1D2E1E8DB0F300BCE63D /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FCEBEC81E91A00900BA379D /* Resources */ = {
|
||||
5F5A1D371E8DB0F300BCE63D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FCEBED31E91A00900BA379D /* Resources */ = {
|
||||
5F5A1D421E8DB0F300BCE63D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -377,108 +432,90 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
72970A95DE21C41243D290B0 /* [CP] Embed Pods Frameworks */ = {
|
||||
5F5A1D661E8DB27100BCE63D /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-My Mind/Pods-My Mind-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C7C5637EC49A098E10C2ABE0 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E3E2E445B46619A044835673 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-My Mind/Pods-My Mind-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
shellScript = "bash \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/AWSCore.framework/strip-frameworks.sh\"";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
5FCEBEB21E91A00900BA379D /* Sources */ = {
|
||||
5F5A1D211E8DB0F300BCE63D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FCEBEFF1E91A2BB00BA379D /* EmergencyView.swift in Sources */,
|
||||
5FCEBEFD1E91A2B200BA379D /* SettingsView.swift in Sources */,
|
||||
5FCEBEEC1E91A20100BA379D /* OnBoardingController.swift in Sources */,
|
||||
5FCEBEBA1E91A00900BA379D /* AppDelegate.swift in Sources */,
|
||||
5FCEBEF91E91A29D00BA379D /* ReferralViews.swift in Sources */,
|
||||
5FCEBF051E91A81000BA379D /* WelcomeScreenViews.swift in Sources */,
|
||||
5FCEBEF71E91A28800BA379D /* ForumView.swift in Sources */,
|
||||
5FCEBEFB1E91A2A400BA379D /* AppointmentView.swift in Sources */,
|
||||
5FCEBF011E91A74100BA379D /* SignUpViews.swift in Sources */,
|
||||
5FE993361E92C3D4002B0FF6 /* OnlineViews.swift in Sources */,
|
||||
5FCEBEF51E91A27B00BA379D /* LoginViews.swift in Sources */,
|
||||
5FF9721B1E8DBA98007AE280 /* OnBoardingController.swift in Sources */,
|
||||
5FF9721E1E8DBAC3007AE280 /* WelcomeScreenOne.swift in Sources */,
|
||||
5FF972221E8DBAE1007AE280 /* WelcomeScreenThree.swift in Sources */,
|
||||
5FF9722A1E8DCE83007AE280 /* UserViews.swift in Sources */,
|
||||
5FF72FEF1E8DDECA00FFD64D /* SignInViewControllerExtensions.swift in Sources */,
|
||||
5FF72FF21E8DDECA00FFD64D /* UserPoolNewPasswordViewController.swift in Sources */,
|
||||
5FDAA1351E946EDE00FF80D4 /* TabBarController.swift in Sources */,
|
||||
5FF72FF01E8DDECA00FFD64D /* UserPoolForgotPasswordViewController.swift in Sources */,
|
||||
5FF72FF51E8DDECA00FFD64D /* UserPoolSignUpViewController.swift in Sources */,
|
||||
5FF72FF11E8DDECA00FFD64D /* UserPoolMFAViewController.swift in Sources */,
|
||||
5F5A1D6B1E8DB2A300BCE63D /* AWSConfiguration.swift in Sources */,
|
||||
5FF72FF41E8DDECA00FFD64D /* UserPoolSignUpConfirmationViewController.swift in Sources */,
|
||||
5F5A1D6C1E8DB2A300BCE63D /* AWSMobileClient.swift in Sources */,
|
||||
5FF9722D1E8DCEA7007AE280 /* SignUpView.swift in Sources */,
|
||||
5F5A1D291E8DB0F300BCE63D /* AppDelegate.swift in Sources */,
|
||||
5FF972281E8DC9F3007AE280 /* ForumView.swift in Sources */,
|
||||
5FF972201E8DBAD9007AE280 /* WelcomeScreenTwo.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FCEBEC61E91A00900BA379D /* Sources */ = {
|
||||
5F5A1D351E8DB0F300BCE63D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FCEBECF1E91A00900BA379D /* My_MindTests.swift in Sources */,
|
||||
5F5A1D3E1E8DB0F300BCE63D /* My_MindTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FCEBED11E91A00900BA379D /* Sources */ = {
|
||||
5F5A1D401E8DB0F300BCE63D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FCEBEDA1E91A00900BA379D /* My_MindUITests.swift in Sources */,
|
||||
5F5A1D491E8DB0F300BCE63D /* My_MindUITests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
5FCEBECC1E91A00900BA379D /* PBXTargetDependency */ = {
|
||||
5F5A1D3B1E8DB0F300BCE63D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 5FCEBEB51E91A00900BA379D /* My Mind */;
|
||||
targetProxy = 5FCEBECB1E91A00900BA379D /* PBXContainerItemProxy */;
|
||||
target = 5F5A1D241E8DB0F300BCE63D /* My Mind */;
|
||||
targetProxy = 5F5A1D3A1E8DB0F300BCE63D /* PBXContainerItemProxy */;
|
||||
};
|
||||
5FCEBED71E91A00900BA379D /* PBXTargetDependency */ = {
|
||||
5F5A1D461E8DB0F300BCE63D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 5FCEBEB51E91A00900BA379D /* My Mind */;
|
||||
targetProxy = 5FCEBED61E91A00900BA379D /* PBXContainerItemProxy */;
|
||||
target = 5F5A1D241E8DB0F300BCE63D /* My Mind */;
|
||||
targetProxy = 5F5A1D451E8DB0F300BCE63D /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
5FCEBEC21E91A00900BA379D /* LaunchScreen.storyboard */ = {
|
||||
5F5A1D2C1E8DB0F300BCE63D /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5FCEBEC31E91A00900BA379D /* Base */,
|
||||
5F5A1D2D1E8DB0F300BCE63D /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5F5A1D311E8DB0F300BCE63D /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5F5A1D321E8DB0F300BCE63D /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
@@ -486,7 +523,7 @@
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
5FCEBEDC1E91A00900BA379D /* Debug */ = {
|
||||
5F5A1D4B1E8DB0F400BCE63D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
@@ -536,7 +573,7 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FCEBEDD1E91A00900BA379D /* Release */ = {
|
||||
5F5A1D4C1E8DB0F400BCE63D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
@@ -579,58 +616,57 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5FCEBEDF1E91A00900BA379D /* Debug */ = {
|
||||
5F5A1D4E1E8DB0F400BCE63D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 706096029E2D8926F6A27630 /* Pods-My Mind.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "My Mind/My Mind.entitlements";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/Pods",
|
||||
"$(PROJECT_DIR)",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/AmazonAws",
|
||||
"$(SRCROOT)/**",
|
||||
);
|
||||
INFOPLIST_FILE = "My Mind/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCMNetworks.My-Mind";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FCEBEE01E91A00900BA379D /* Release */ = {
|
||||
5F5A1D4F1E8DB0F400BCE63D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 4EB7D250E5F6F6ED4ECEE61D /* Pods-My Mind.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "My Mind/My Mind.entitlements";
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer: Alexander Davis (6S4KYV4QU7)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/My\\ Mind",
|
||||
"$(PROJECT_DIR)/Pods",
|
||||
"$(PROJECT_DIR)",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/Sdk/Aws",
|
||||
"$(PROJECT_DIR)/My\\ Mind/AmazonAws",
|
||||
"$(SRCROOT)/**",
|
||||
);
|
||||
INFOPLIST_FILE = "My Mind/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCMNetworks.My-Mind";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5FCEBEE21E91A00900BA379D /* Debug */ = {
|
||||
5F5A1D511E8DB0F400BCE63D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
@@ -645,7 +681,7 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FCEBEE31E91A00900BA379D /* Release */ = {
|
||||
5F5A1D521E8DB0F400BCE63D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
@@ -660,7 +696,7 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5FCEBEE51E91A00900BA379D /* Debug */ = {
|
||||
5F5A1D541E8DB0F400BCE63D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
@@ -674,7 +710,7 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FCEBEE61E91A00900BA379D /* Release */ = {
|
||||
5F5A1D551E8DB0F400BCE63D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
@@ -691,43 +727,43 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
5FCEBEB11E91A00900BA379D /* Build configuration list for PBXProject "My Mind" */ = {
|
||||
5F5A1D201E8DB0F300BCE63D /* Build configuration list for PBXProject "My Mind" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FCEBEDC1E91A00900BA379D /* Debug */,
|
||||
5FCEBEDD1E91A00900BA379D /* Release */,
|
||||
5F5A1D4B1E8DB0F400BCE63D /* Debug */,
|
||||
5F5A1D4C1E8DB0F400BCE63D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5FCEBEDE1E91A00900BA379D /* Build configuration list for PBXNativeTarget "My Mind" */ = {
|
||||
5F5A1D4D1E8DB0F400BCE63D /* Build configuration list for PBXNativeTarget "My Mind" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FCEBEDF1E91A00900BA379D /* Debug */,
|
||||
5FCEBEE01E91A00900BA379D /* Release */,
|
||||
5F5A1D4E1E8DB0F400BCE63D /* Debug */,
|
||||
5F5A1D4F1E8DB0F400BCE63D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5FCEBEE11E91A00900BA379D /* Build configuration list for PBXNativeTarget "My MindTests" */ = {
|
||||
5F5A1D501E8DB0F400BCE63D /* Build configuration list for PBXNativeTarget "My MindTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FCEBEE21E91A00900BA379D /* Debug */,
|
||||
5FCEBEE31E91A00900BA379D /* Release */,
|
||||
5F5A1D511E8DB0F400BCE63D /* Debug */,
|
||||
5F5A1D521E8DB0F400BCE63D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5FCEBEE41E91A00900BA379D /* Build configuration list for PBXNativeTarget "My MindUITests" */ = {
|
||||
5F5A1D531E8DB0F400BCE63D /* Build configuration list for PBXNativeTarget "My MindUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FCEBEE51E91A00900BA379D /* Debug */,
|
||||
5FCEBEE61E91A00900BA379D /* Release */,
|
||||
5F5A1D541E8DB0F400BCE63D /* Debug */,
|
||||
5F5A1D551E8DB0F400BCE63D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 5FCEBEAE1E91A00900BA379D /* Project object */;
|
||||
rootObject = 5F5A1D1D1E8DB0F300BCE63D /* Project object */;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildLocationStyle</key>
|
||||
<string>UseAppPreferences</string>
|
||||
<key>CustomBuildLocationType</key>
|
||||
<string>RelativeToDerivedData</string>
|
||||
<key>DerivedDataLocationStyle</key>
|
||||
<string>Default</string>
|
||||
<key>IssueFilterStyle</key>
|
||||
<string>ShowActiveSchemeOnly</string>
|
||||
<key>LiveSourceIssuesEnabled</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Bucket
|
||||
type = "1"
|
||||
version = "2.0">
|
||||
<Breakpoints>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
scope = "0"
|
||||
stopOnStyle = "0">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
@@ -14,7 +14,7 @@
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5FCEBEB51E91A00900BA379D"
|
||||
BlueprintIdentifier = "5F5A1D241E8DB0F300BCE63D"
|
||||
BuildableName = "My Mind.app"
|
||||
BlueprintName = "My Mind"
|
||||
ReferencedContainer = "container:My Mind.xcodeproj">
|
||||
@@ -32,7 +32,7 @@
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5FCEBEC91E91A00900BA379D"
|
||||
BlueprintIdentifier = "5F5A1D381E8DB0F300BCE63D"
|
||||
BuildableName = "My MindTests.xctest"
|
||||
BlueprintName = "My MindTests"
|
||||
ReferencedContainer = "container:My Mind.xcodeproj">
|
||||
@@ -42,7 +42,7 @@
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5FCEBED41E91A00900BA379D"
|
||||
BlueprintIdentifier = "5F5A1D431E8DB0F300BCE63D"
|
||||
BuildableName = "My MindUITests.xctest"
|
||||
BlueprintName = "My MindUITests"
|
||||
ReferencedContainer = "container:My Mind.xcodeproj">
|
||||
@@ -52,7 +52,7 @@
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5FCEBEB51E91A00900BA379D"
|
||||
BlueprintIdentifier = "5F5A1D241E8DB0F300BCE63D"
|
||||
BuildableName = "My Mind.app"
|
||||
BlueprintName = "My Mind"
|
||||
ReferencedContainer = "container:My Mind.xcodeproj">
|
||||
@@ -75,7 +75,7 @@
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5FCEBEB51E91A00900BA379D"
|
||||
BlueprintIdentifier = "5F5A1D241E8DB0F300BCE63D"
|
||||
BuildableName = "My Mind.app"
|
||||
BlueprintName = "My Mind"
|
||||
ReferencedContainer = "container:My Mind.xcodeproj">
|
||||
@@ -94,7 +94,7 @@
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "5FCEBEB51E91A00900BA379D"
|
||||
BlueprintIdentifier = "5F5A1D241E8DB0F300BCE63D"
|
||||
BuildableName = "My Mind.app"
|
||||
BlueprintName = "My Mind"
|
||||
ReferencedContainer = "container:My Mind.xcodeproj">
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>5FCEBEB51E91A00900BA379D</key>
|
||||
<key>5F5A1D241E8DB0F300BCE63D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>5FCEBEC91E91A00900BA379D</key>
|
||||
<key>5F5A1D381E8DB0F300BCE63D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>5FCEBED41E91A00900BA379D</key>
|
||||
<key>5F5A1D431E8DB0F300BCE63D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
|
||||
10
My Mind/My Mind.xcworkspace/contents.xcworkspacedata
generated
10
My Mind/My Mind.xcworkspace/contents.xcworkspacedata
generated
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:My Mind.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
Binary file not shown.
29
My Mind/My Mind/AmazonAws/AWSConfiguration.swift
Executable file
29
My Mind/My Mind/AmazonAws/AWSConfiguration.swift
Executable file
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// AWSConfiguration.swift
|
||||
// My Mind
|
||||
//
|
||||
//
|
||||
// Copyright 2017 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
// Source code generated from Amazon Mobile Hub
|
||||
//
|
||||
//
|
||||
|
||||
import AWSCore
|
||||
|
||||
let ServiceKey: String = "Prod";
|
||||
|
||||
// Cognito User Pools Identity Id
|
||||
let AWSCognitoUserPoolId: String = "eu-west-2_GyTxJ1kUG"
|
||||
|
||||
// Cognito User Pools App Client Id
|
||||
let AWSCognitoUserPoolAppClientId: String = "2qlv4rkq1ea4sg0v6loen29lph"
|
||||
|
||||
// Cognito User Pools Region
|
||||
let AWSCognitoUserPoolRegion: AWSRegionType = .EUWest2
|
||||
|
||||
// Cognito User Pools Client Secret
|
||||
let AWSCognitoUserPoolClientSecret: String = "19uu3s8skbcoqcdn4dhj6q180q31laf8cr4bopd4k36t8k01jn3j"
|
||||
110
My Mind/My Mind/AmazonAws/AWSMobileClient.swift
Executable file
110
My Mind/My Mind/AmazonAws/AWSMobileClient.swift
Executable file
@@ -0,0 +1,110 @@
|
||||
//
|
||||
// AWSMobileClient.swift
|
||||
// My Mind
|
||||
//
|
||||
//
|
||||
// Copyright 2017 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
// Source code generated from Amazon Mobile Hub
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import AWSCore
|
||||
import AWSMobileHubHelper
|
||||
import AWSPinpoint
|
||||
|
||||
/**
|
||||
* AWSMobileClient is a singleton that bootstraps the app. It creates an identity manager to establish the user identity with Amazon Cognito.
|
||||
*/
|
||||
class AWSMobileClient: NSObject {
|
||||
|
||||
// Shared instance of this class
|
||||
static let sharedInstance = AWSMobileClient()
|
||||
fileprivate var isInitialized: Bool
|
||||
//Used for checking whether Push Notification is enabled in Amazon Pinpoint
|
||||
static let remoteNotificationKey = "RemoteNotification"
|
||||
fileprivate override init() {
|
||||
isInitialized = false
|
||||
super.init()
|
||||
}
|
||||
|
||||
deinit {
|
||||
// Should never be called
|
||||
print("Mobile Client deinitialized. This should not happen.")
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure third-party services from application delegate with url, application
|
||||
* that called this provider, and any annotation info.
|
||||
*
|
||||
* - parameter application: instance from application delegate.
|
||||
* - parameter url: called from application delegate.
|
||||
* - parameter sourceApplication: that triggered this call.
|
||||
* - parameter annotation: from application delegate.
|
||||
* - returns: true if call was handled by this component
|
||||
*/
|
||||
func withApplication(_ application: UIApplication, withURL url: URL, withSourceApplication sourceApplication: String?, withAnnotation annotation: Any) -> Bool {
|
||||
print("withApplication:withURL")
|
||||
AWSIdentityManager.default().interceptApplication(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
|
||||
|
||||
if (!isInitialized) {
|
||||
isInitialized = true
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs any additional activation steps required of the third party services
|
||||
* e.g. Facebook
|
||||
*
|
||||
* - parameter application: from application delegate.
|
||||
*/
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
print("applicationDidBecomeActive:")
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Configures all the enabled AWS services from application delegate with options.
|
||||
*
|
||||
* - parameter application: instance from application delegate.
|
||||
* - parameter launchOptions: from application delegate.
|
||||
*/
|
||||
func didFinishLaunching(_ application: UIApplication, withOptions launchOptions: [AnyHashable: Any]?) -> Bool {
|
||||
print("didFinishLaunching:")
|
||||
|
||||
// Register the sign in provider instances with their unique identifier
|
||||
|
||||
// set up cognito user pool
|
||||
setupUserPool()
|
||||
|
||||
|
||||
let didFinishLaunching: Bool = AWSIdentityManager.default().interceptApplication(application, didFinishLaunchingWithOptions: launchOptions)
|
||||
|
||||
if (!isInitialized) {
|
||||
AWSIdentityManager.default().resumeSession(completionHandler: { (result: Any?, error: Error?) in
|
||||
print("Result: \(String(describing: result)) \n Error:\(String(describing: error))")
|
||||
}) // If you get an EXC_BAD_ACCESS here in iOS Simulator, then do Simulator -> "Reset Content and Settings..."
|
||||
// This will clear bad auth tokens stored by other apps with the same bundle ID.
|
||||
isInitialized = true
|
||||
}
|
||||
|
||||
return didFinishLaunching
|
||||
}
|
||||
|
||||
func setupUserPool() {
|
||||
// register your user pool configuration
|
||||
AWSCognitoUserPoolsSignInProvider.setupUserPool(withId: AWSCognitoUserPoolId, cognitoIdentityUserPoolAppClientId: AWSCognitoUserPoolAppClientId, cognitoIdentityUserPoolAppClientSecret: AWSCognitoUserPoolClientSecret, region: AWSCognitoUserPoolRegion)
|
||||
|
||||
AWSSignInProviderFactory.sharedInstance().register(signInProvider: AWSCognitoUserPoolsSignInProvider.sharedInstance(), forKey:AWSCognitoUserPoolsSignInProviderKey)
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
BIN
My Mind/My Mind/AmazonAws/AWSMobileHubHelper.framework/AWSMobileHubHelper
Executable file
BIN
My Mind/My Mind/AmazonAws/AWSMobileHubHelper.framework/AWSMobileHubHelper
Executable file
Binary file not shown.
@@ -0,0 +1,77 @@
|
||||
//
|
||||
// AWSAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
extern NSString * _Nonnull const AWSAuthorizationManagerErrorDomain;
|
||||
|
||||
typedef NS_ENUM(NSUInteger, AWSAuthorizationManagerError) {
|
||||
AWSAuthorizationErrorUserCancelledFlow,
|
||||
AWSAuthorizationErrorConnectionError,
|
||||
AWSAuthorizationErrorFailedToRetrieveAccessToken,
|
||||
AWSAuthorizationErrorMissingRequiredParameter,
|
||||
};
|
||||
|
||||
@interface AWSAuthorizationManager : NSObject
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user during OAuth1.0, 2.0, other flows.
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Utility method that constructs form encoded portion of url
|
||||
* i.e. @{@"grant": @"code", @"client_id": @"abc123"} -> @"grant=code&client_id=abc123&"
|
||||
*
|
||||
* @return the string representation of a form
|
||||
*/
|
||||
+ (NSString * _Nonnull)constructURIWithParameters:(NSDictionary * _Nonnull)params;
|
||||
|
||||
/**
|
||||
* Utility method that constructs dictionary from simple form encoded url
|
||||
* i.e. @"grant=code&client_id=abc123" -> @{@"grant": @"code", @"client_id": @"abc123"}
|
||||
*
|
||||
* @return the dictionary representation of a url encoded form
|
||||
*/
|
||||
+ (NSDictionary * _Nonnull)constructParametersWithURI:(NSString * _Nonnull)formString;
|
||||
|
||||
/**
|
||||
* Starts the authorization flow. Should be called from main thread.
|
||||
*
|
||||
* @param authorizeViewController The view controller that user sees right before they should see a login screen.
|
||||
* @param completionHandler The code that will follow after receiving successful login. Executes BEFORE login screen is dismissed.
|
||||
*/
|
||||
- (void)authorizeWithView:(UIViewController * _Nonnull)authorizeViewController completionHandler:(void (^ _Nullable)(id _Nullable result, NSError * _Nullable error)) completionHandler;
|
||||
|
||||
/**
|
||||
* This method should be placed in the AppDelegate to listen for the redirect URI.
|
||||
*
|
||||
* - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
|
||||
*
|
||||
* @param url The url that the authorization flow gives back.
|
||||
* @return YES if the url matches an expected response, NO if it is not expected.
|
||||
*/
|
||||
- (BOOL)handleURL:(NSURL * _Nullable)url;
|
||||
|
||||
/**
|
||||
* @return the accessToken used for API calls
|
||||
*/
|
||||
- (NSString * _Nullable)getAccessToken;
|
||||
|
||||
/**
|
||||
* Starts the logout flow. Should be called from main thread.
|
||||
*
|
||||
* @param logoutViewController The view controller that user sees right before they should see a logout indication.
|
||||
* @param completionHandler The code that will follow after receiving successful login. Executes BEFORE login screen is dismissed.
|
||||
*/
|
||||
- (void)logout:(UIViewController * _Nonnull)logoutViewController completionHandler:(void (^ _Nullable)(id _Nullable result, NSError * _Nullable error)) completionHandler;
|
||||
|
||||
@end
|
||||
140
My Mind/My Mind/AmazonAws/AWSMobileHubHelper.framework/Headers/AWSCloudLogic.h
Executable file
140
My Mind/My Mind/AmazonAws/AWSMobileHubHelper.framework/Headers/AWSCloudLogic.h
Executable file
@@ -0,0 +1,140 @@
|
||||
//
|
||||
// AWSCloudLogic.h
|
||||
//
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import <AWSCore/AWSCore.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* Cloud logic helper singleton class that provides convenient interface to invoke
|
||||
* AWS Lambda functions and handle the results asynchronously.
|
||||
* Requires the AWSLambda framework of AWSiOSSDK.
|
||||
*/
|
||||
@interface AWSCloudLogic : NSObject
|
||||
|
||||
/**
|
||||
Returns the default Cloud Logic singleton instance configured using the information provided in `Info.plist` file.
|
||||
|
||||
*Swift*
|
||||
|
||||
let cloudLogic = AWSCloudLogic.default()
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCloudLogic *cloudLogic = [AWSCloudLogic defaultCloudLogic];
|
||||
|
||||
*/
|
||||
+ (instancetype)defaultCloudLogic;
|
||||
|
||||
/**
|
||||
Creates a helper client for `AWSCloud` for specified configuration with mentioned key.
|
||||
Use this method only if you require a helper client with specific configuration.
|
||||
|
||||
For example, set the configuration in `- application:didFinishLaunchingWithOptions:`
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
|
||||
AWSCloudLogic.register(with: configuration, forKey: "USWest2CloudLogic")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
[AWSCloudLogic registerCloudLogicWithConfiguration:configuration
|
||||
forKey:@"USWest2CloudLogic"];
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let cloudLogic = AWSCloudLogic(forKey: "USWest2CloudLogic")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCloudLogic *cloudLogic = [AWSCloudLogic cloudLogicForKey:@"USWest2CloudLogic"];
|
||||
|
||||
@warning After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
|
||||
|
||||
@param serviceConfiguration AWSServiceConfiguration object for the cloud logic.
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)registerCloudLogicWithConfiguration:(AWSServiceConfiguration *)serviceConfiguration
|
||||
forKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Retrieves the helper client associated with the key. You need to call `+ registercloudLogicWithConfiguration:` before invoking this method. If `+ registercloudLogicWithConfiguration:` has not been called in advance or the key does not exist, this method returns `nil`.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
|
||||
AWSCloudLogic.registercloudLogicWithConfiguration(configuration, forKey: "USWest2cloudLogic")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
[AWSCloudLogic registercloudLogicWithConfiguration:configuration
|
||||
forKey:@"USWest2cloudLogic"];
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let CloudLogic = AWSCloudLogic(forKey: "USWest2cloudLogic")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCloudLogic *CloudLogic = [AWSCloudLogic CloudLogicForKey:@"USWest2cloudLogic"];
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
@return An instance of AWSCloudLogic for specified key.
|
||||
*/
|
||||
+ (instancetype)CloudLogicForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Removes the helper client associated with the key and release it.
|
||||
|
||||
*Swift*
|
||||
|
||||
AWSCloudLogic.remove(forKey: "USWest2CloudLogic")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
[AWSCloudLogic removeCloudLogicForKey:@"USWest2CloudLogic"];
|
||||
|
||||
@warning Before calling this method, make sure no method is running on this client.
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)removeCloudLogicForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Invokes the specified AWS Lambda function and passes the results and possible error back to the application asynchronously.
|
||||
|
||||
@param name AWS Lambda function name, e.g., hello-world
|
||||
@param parameters The object from which to generate JSON request data. Can be `nil`.
|
||||
@param completionBlock handler for results from the function
|
||||
*/
|
||||
- (void)invokeFunction:(NSString *)name
|
||||
withParameters:(nullable id)parameters
|
||||
completionBlock:(void (^)(id _Nullable result, NSError * _Nullable error))completionBlock;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// AWSCognitoUserPoolsSignInProvider.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AWSSignInProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
FOUNDATION_EXPORT NSString *const AWSCognitoUserPoolsSignInProviderKey;
|
||||
|
||||
@protocol AWSCognitoUserPoolsSignInHandler
|
||||
|
||||
/**
|
||||
* This method is called when `loginWithSignInProvider` is called by `AWSIdentityManager`.
|
||||
* This method should handle the input from the user and set the `taskCompletionSournce` result required by Cognito Idp SDK.
|
||||
*/
|
||||
- (void)handleUserPoolSignInFlowStart;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* `AWSCognitoUserPoolsSignInProvider` adopts the `AWSSignInProvider` protocol.
|
||||
*
|
||||
* It works with the AWS Cognito User Pools SDK internally.
|
||||
*/
|
||||
@interface AWSCognitoUserPoolsSignInProvider : NSObject <AWSSignInProvider>
|
||||
|
||||
/**
|
||||
* Registers the cognito pool with specified configuration. The pool object can be accessed by using the `CognitoIdentityUserPoolForKey:` method using `AWSCognitoUserPoolsSignInProviderKey` as the identifier key.
|
||||
*
|
||||
* @param cognitoIdentityUserPoolId The Cognito Identity User Pool Id
|
||||
* @param cognitoIdentityUserPoolAppClientId The Cognito Identity User Pool Client Id
|
||||
* @param cognitoIdentityUserPoolAppClientSecret The Cognito Identity User Pool Client Secret
|
||||
* @param region The Cognito Identity User Pool Service Region
|
||||
*/
|
||||
+ (void)setupUserPoolWithId:(NSString *)cognitoIdentityUserPoolId
|
||||
cognitoIdentityUserPoolAppClientId:(NSString *)cognitoIdentityUserPoolAppClientId
|
||||
cognitoIdentityUserPoolAppClientSecret:(NSString *)cognitoIdentityUserPoolAppClientSecret
|
||||
region:(AWSRegionType)region;
|
||||
|
||||
/**
|
||||
Fetches the shared instance for AWSCognitoUserPoolsSignInProvider. The method `setupUserPoolWithId:cognitoIdentityUserPoolAppClientId:cognitoIdentityUserPoolAppClientSecret:region` has to be called once before accessing the shared instance.
|
||||
|
||||
@return the single instance of AWSCognitoUserPoolsSignInProvider
|
||||
*/
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
* Set the instance of the class adopting the `AWSCognitoIdentityInteractiveAuthenticationDelegate` protocol of Cognito Idp SDK.
|
||||
*
|
||||
* @param interactiveAuthDelegate A class adopting the `AWSCognitoIdentityInteractiveAuthenticationDelegate` protocol
|
||||
*/
|
||||
- (void)setInteractiveAuthDelegate:(id)interactiveAuthDelegate;
|
||||
|
||||
/**
|
||||
* Returns the status of the current user pool user.
|
||||
*
|
||||
* @return `YES` if the user is signed in.
|
||||
*/
|
||||
- (BOOL)isLoggedIn;
|
||||
|
||||
/**
|
||||
* Sets the userName value of the signed-in user into a persistent store.
|
||||
* Should be called on a successful login to set the user name which is used by `AWSIdentityManager`.
|
||||
*
|
||||
* @param userName the user name of the signed-in user
|
||||
*/
|
||||
- (void)setUserName:(NSString *)userName;
|
||||
|
||||
/**
|
||||
* Sets the imageURL value of the signed-in user into a persistent store.
|
||||
* Should be called on a successful login to set the user name which is used by `AWSIdentityManager`.
|
||||
*
|
||||
* @param imageURL the image URL for a picture of the signed-in user
|
||||
*/
|
||||
- (void)setImageURL:(NSURL *)imageURL;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,601 @@
|
||||
//
|
||||
// AWSContentManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AWSCore/AWSCore.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* The error domain for `AWSContentManager`.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const AWSContentManagerErrorDomain;
|
||||
|
||||
/**
|
||||
* The error codes for `AWSContentManager`.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, AWSContentManagerErrorType){
|
||||
/**
|
||||
* Generic error.
|
||||
*/
|
||||
AWSContentManagerErrorTypeUnknown,
|
||||
/**
|
||||
* Initiated a transfer on a content that is already running.
|
||||
*/
|
||||
AWSContentManagerErrorTypeTransferAlreadyInProgress,
|
||||
/**
|
||||
* Initiated a transfer on a directory. Directories cannot be downloaded.
|
||||
*/
|
||||
AWSContentManagerErrorTypeDirectoryCannotBeDownloaded,
|
||||
/**
|
||||
* A server returned a client exception (e.g. HTTP status code 4xx).
|
||||
*/
|
||||
AWSContentManagerErrorTypeClientException,
|
||||
/**
|
||||
* A server returned a service exception (e.g. HTTP status code 5xx).
|
||||
*/
|
||||
AWSContentManagerErrorTypeServiceException,
|
||||
};
|
||||
|
||||
@class AWSContent;
|
||||
@class AWSContentManagerConfiguration;
|
||||
|
||||
/**
|
||||
* The Content Manager manages caching and transfer of files from Amazon S3 and/or
|
||||
* Amazon CloudFront. It lists files directly using S3, regardless of whether
|
||||
* Amazon CloudFront is in use. It maintains a size-limited cache for files stored
|
||||
* on the local device and provides operations to set the cache size limit and
|
||||
* clear files from the local cache. It serves as the application's interface into
|
||||
* the Content Delivery feature. Content Manager instances are also used internally
|
||||
* for the User Files feature.
|
||||
* Requires the AWSS3 framework of AWSiOSSDK.
|
||||
*/
|
||||
@interface AWSContentManager : NSObject
|
||||
|
||||
/**
|
||||
* Local cache size limit in bytes.
|
||||
*/
|
||||
@property (nonatomic, assign) NSUInteger maxCacheSize;
|
||||
|
||||
/**
|
||||
* Local cache bytes used.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSUInteger cachedUsedSize;
|
||||
|
||||
/**
|
||||
* Number of bytes pinned in the cache. Pinned items do not count towards the
|
||||
* cache size limit.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSUInteger pinnedSize;
|
||||
|
||||
/**
|
||||
Returns the default Content Manager singleton instance configured using the information provided in `Info.plist` file.
|
||||
|
||||
*Swift*
|
||||
|
||||
let contentManager = AWSContentManager.default()
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSContentManager *contentManager = [AWSContentManager defaultContentManager];
|
||||
|
||||
*/
|
||||
+ (instancetype)defaultContentManager;
|
||||
|
||||
/**
|
||||
Creates a helper client for AWSContentManager for specified configuration with mentioned key.
|
||||
Use this method only if you require a helper client with specific configuration.
|
||||
|
||||
For example, set the configuration in `- application:didFinishLaunchingWithOptions:`
|
||||
|
||||
*Swift*
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration
|
||||
|
||||
let contentManagerConfiguration = AWSContentManagerConfiguration(bucketName: "myBucket")
|
||||
|
||||
AWSContentManager.register(with: contentManagerConfiguration, forKey: "defaultManager")
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSContentManagerConfiguration *contentManagerConfiguration = [[AWSContentManager alloc] initWithBucketName:@"myBucketName"];
|
||||
[AWSContentManager registerUserFileManagerWithConfiguration:contentManagerConfiguration
|
||||
forKey:@"defaultManager"];
|
||||
return YES;
|
||||
}
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let contentManager = AWSContentManager(forKey: "defaultManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSContentManager *contentManager = [AWSContentManager contentManagerForKey:@"defaultManager"];
|
||||
|
||||
@warning After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
|
||||
|
||||
@param contentManagerConfiguration AWSContentManagerConfiguration object for the manager.
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)registerContentManagerWithConfiguration:(AWSContentManagerConfiguration *)contentManagerConfiguration
|
||||
forKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Retrieves the helper client associated with the key. You need to call `+ registerContentManagerWithConfiguration:forKey:` before invoking this method. If `+ registerContentManagerWithConfiguration:forKey:` has not been called in advance or the key does not exist, this method returns `nil`.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration
|
||||
|
||||
let contentManagerConfiguration = AWSContentManagerConfiguration(bucketName: "myBucket")
|
||||
|
||||
AWSContentManager.register(with: contentManagerConfiguration, forKey: "defaultManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSContentManagerConfiguration *contentManagerConfiguration = [[AWSContentManager alloc] initWithBucketName:@"myBucketName"];
|
||||
[AWSContentManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"defaultManager"];
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let ContentManager = AWSContentManager(forKey: "defaultManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSContentManager *ContentManager = [AWSContentManager ContentManagerForKey:@"defaultManager"];
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
@return An instance of AWSUserFileManager for specified key.
|
||||
*/
|
||||
+ (instancetype)ContentManagerForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Removes the helper client associated with the key and release it.
|
||||
|
||||
*Swift*
|
||||
|
||||
AWSContentManager.remove(forKey: "defaultManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
[AWSContentManager removeContentManagerForKey:@"defaultManager"];
|
||||
|
||||
@warning Before calling this method, make sure no method is running on this client.
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)removeContentManagerForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Loads the list of available files in the Amazon S3 bucket under the folder specified by the prefix parameter. Results are paged with page size of 100 files. The marker parameter value returned from a call should be passed to a subsequent call, in order to page through the list of files.
|
||||
|
||||
*Swift*
|
||||
|
||||
let contentManager = AWSContentManager(forKey: "defaultManager")
|
||||
manager.listAvailableContents(withPrefix: "prefix", marker: marker, completionHandler: {(contents: [AWSContent]?, nextMarker: String?, error: Error?) -> Void in
|
||||
if let error = error {
|
||||
print("Failed to load the list of contents. \(error)")
|
||||
// handle content load failure here
|
||||
}
|
||||
if let contents = contents, contents.count > 0 {
|
||||
// Use marker and contents here
|
||||
}
|
||||
// handle successful result here
|
||||
})
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSContentManager *contentManager = [AWSContentManager contentManagerForKey:@"defaultManager"];
|
||||
[contentManager
|
||||
listAvailableContentsWithPrefix:@"prefix"
|
||||
marker:marker
|
||||
completionHandler:^(NSArray *contents, NSString *nextMarker, NSError *error) {
|
||||
if (error) {
|
||||
NSLog(@"Failed to load the list of contents. %@", error);
|
||||
// handle content load failure here
|
||||
}
|
||||
if (contents.count > 0) {
|
||||
// Use marker and contents here
|
||||
}
|
||||
// handle successful result here
|
||||
}];
|
||||
|
||||
@param prefix Limits the response to keys that begin with the specified prefix.
|
||||
@param marker The key to start with when listing objects in a bucket. It loads object metadata from the S3 bucket in alphabetical order, starting with the key after the marker in order.
|
||||
@param completionHandler The completion handler that returns the results and error.
|
||||
*/
|
||||
- (void)listAvailableContentsWithPrefix:(nullable NSString *)prefix
|
||||
marker:(nullable NSString *)marker
|
||||
completionHandler:(void (^)(NSArray<AWSContent *> * _Nullable contents, NSString * _Nullable marker, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
Returns a list of contents that fit in the available cache. The list is sorted by last modified date on the S3 bucket, the most recently modified one first.
|
||||
|
||||
*Swift*
|
||||
|
||||
let contentManager = AWSContentManager(forKey: "defaultManager")
|
||||
contentManager.listRecentContents(withPrefix: "prefix", completionHandler: {(result: [AWSContent]?, error: Error?) -> Void in
|
||||
if let error = error {
|
||||
print("Failed to load the list of recent contents. \(error)")
|
||||
// Handle error here
|
||||
}
|
||||
if let downloadResult: [AWSContent] = result {
|
||||
// Handle successful result here
|
||||
for content: AWSContent in downloadResult {
|
||||
// Handle each of the item in the result
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSContentManager *contentManager = [AWSContentManager contentManagerForKey:@"defaultManager"];
|
||||
[contentManager listRecentContentsWithPrefix:@"prefix"
|
||||
completionHandler:^(NSArray<AWSContent *> * result, NSError *error) {
|
||||
if (error) {
|
||||
NSLog(@"%@", error.description);
|
||||
}
|
||||
for (AWSContent *content in result) {
|
||||
// Handle each of the item in result
|
||||
}
|
||||
}];
|
||||
|
||||
|
||||
@param prefix Limits the response to keys that begin with the specified prefix.
|
||||
@param completionHandler The completion handler that returns the result and error.
|
||||
*/
|
||||
- (void)listRecentContentsWithPrefix:(nullable NSString *)prefix
|
||||
completionHandler:(void (^)(NSArray<AWSContent *> * _Nullable result, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
* Removes all cached contents. It does not modify the remote objects.
|
||||
*/
|
||||
- (void)clearCache;
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSContent` for a given key. You can use this method to download content without first load its metadata using `- loadContentMetadataWithPrefix:marker:completionHandler:`.
|
||||
|
||||
@param key The key of the content.
|
||||
|
||||
@return An instance of `AWSContent`.
|
||||
*/
|
||||
- (AWSContent *)contentWithKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* Status of content item download.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, AWSContentStatusType){
|
||||
/**
|
||||
* Unknown status. This should not happen.
|
||||
*/
|
||||
AWSContentStatusTypeUnknown,
|
||||
/**
|
||||
* Has been created but has not started running yet.
|
||||
*/
|
||||
AWSContentStatusTypeNotStarted,
|
||||
/**
|
||||
* Is running and transferring data from/to the remote server.
|
||||
*/
|
||||
AWSContentStatusTypeRunning,
|
||||
/**
|
||||
* Has completed transferring data from/to the remote server.
|
||||
*/
|
||||
AWSContentStatusTypeCompleted,
|
||||
/**
|
||||
* Has failed to transfer data from/to the remote server.
|
||||
*/
|
||||
AWSContentStatusTypeFailed,
|
||||
};
|
||||
|
||||
/**
|
||||
* Policy to use when downloading a file.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, AWSContentDownloadType){
|
||||
/**
|
||||
* Downalods a file if not cached locally.
|
||||
*/
|
||||
AWSContentDownloadTypeIfNotCached,
|
||||
/**
|
||||
* Downloads a file if not cached locally or the remote version is newer than the locally cached version.
|
||||
*/
|
||||
AWSContentDownloadTypeIfNewerExists,
|
||||
/**
|
||||
* Downloads a file and overwrite it if the local cache exists.
|
||||
*/
|
||||
AWSContentDownloadTypeAlways,
|
||||
};
|
||||
|
||||
/**
|
||||
* The content object that holds the cached data and its metadata.
|
||||
*/
|
||||
@interface AWSContent : NSObject
|
||||
|
||||
/**
|
||||
* The Amazon S3 key associated with the content.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *key;
|
||||
|
||||
/**
|
||||
* Shows if the content is a directory.
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isDirectory) BOOL directory;
|
||||
|
||||
/**
|
||||
* The status of the content.
|
||||
*/
|
||||
@property (nonatomic, readonly) AWSContentStatusType status;
|
||||
|
||||
/**
|
||||
* The transfer progress.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSProgress *progress;
|
||||
|
||||
/**
|
||||
* The last known size reported by the Amazon S3. May be different from the actual size if the file was modified on the server.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSUInteger knownRemoteByteCount;
|
||||
|
||||
/**
|
||||
* The last known last modified date reported by the Amazon S3. May be different from the actual last modified date if the file was modified on the server.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSDate * _Nullable knownRemoteLastModifiedDate;
|
||||
|
||||
/**
|
||||
* The cached data object.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSData *cachedData;
|
||||
|
||||
/**
|
||||
* The cached data size.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSUInteger fileSize;
|
||||
|
||||
/**
|
||||
* The date the cached data was downloaded.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSDate * _Nullable downloadedDate;
|
||||
|
||||
/**
|
||||
* Wheather the content is locally cached.
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isCached) BOOL cached;
|
||||
|
||||
/**
|
||||
* Weather the content is pinned. Pinned objects are not subject to the content cache limit.
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isPinned) BOOL pinned;
|
||||
|
||||
/**
|
||||
Downloads a file from the remote server.
|
||||
|
||||
*Swift*
|
||||
|
||||
func downloadContent(content: AWSContent, pinOnCompletion: Bool) {
|
||||
content.download(with: .ifNewerExists, pinOnCompletion: pinOnCompletion, progressBlock: { (content: AWSContent, content: Progress) in
|
||||
// Handle progress feedback
|
||||
}, completionHandler: { (content: AWSContent?, data: Data?, error: Error?) in
|
||||
if let error = error {
|
||||
print("Failed to download a content from a server.)")
|
||||
// Handle error here
|
||||
return
|
||||
}
|
||||
// Handle successful download here
|
||||
})
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (void)downloadContent:(AWSContent *)content
|
||||
pinOnCompletion:(BOOL)pinOnCompletion {
|
||||
[content downloadWithDownloadType:AWSContentDownloadTypeIfNewerExists
|
||||
pinOnCompletion:pinOnCompletion
|
||||
progressBlock:^(AWSContent *content, NSProgress *progress) {
|
||||
// Handle progress feedback
|
||||
}
|
||||
completionHandler:^(AWSContent *content, NSData *data, NSError *error) {
|
||||
if (error) {
|
||||
NSLog(@"Failed to download a content from a server. %@", error);
|
||||
// Handle error here
|
||||
return;
|
||||
}
|
||||
// Handle successful download here
|
||||
}];
|
||||
}
|
||||
|
||||
@param loadingType Specifies the loading behavior for downloading data.
|
||||
@param pinOnCompletion When set to `YES`, it pins the content on completion. You can download a content that does not fit in the content cache by setting it to `YES`.
|
||||
@param progressBlock The progress feedback block.
|
||||
@param completionHandler The completion handler block.
|
||||
*/
|
||||
- (void)downloadWithDownloadType:(AWSContentDownloadType)loadingType
|
||||
pinOnCompletion:(BOOL)pinOnCompletion
|
||||
progressBlock:(void(^ _Nullable)(AWSContent *content, NSProgress *progress))progressBlock
|
||||
completionHandler:(void(^)(AWSContent * _Nullable content, NSData * _Nullable data, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
Gets Presigned URL or the Cloud Front URL for the file.
|
||||
|
||||
*Swift*
|
||||
|
||||
func getContentURL(content: AWSContent) {
|
||||
content.getRemoteFileURLWithCompletionHandler({ (url: URL?, error: Error?) -> Void in
|
||||
guard let url = url else {
|
||||
NSLog("Error getting URL for file. \(error)")
|
||||
return
|
||||
}
|
||||
// Handle successfully generated URL here
|
||||
})
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (void)getContentURL:(AWSContent *)content {
|
||||
[content getRemoteFileURLWithCompletionHandler:^(NSURL *url, NSError *error) {
|
||||
if (error) {
|
||||
NSLog(@"Failed to get a valid URL from a server. %@", error);
|
||||
}
|
||||
// handle successfully generated URL here
|
||||
}];
|
||||
}
|
||||
|
||||
@param completionHandler The completion handler block.
|
||||
*/
|
||||
- (void)getRemoteFileURLWithCompletionHandler:(void(^)(NSURL * _Nullable url, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
* Pins the locally cached object. Pinned objects are not subject to the content cache limit.
|
||||
*/
|
||||
- (void)pin;
|
||||
|
||||
/**
|
||||
* Unpins the pinned object. It may purge the content cache if the content cache does not have enough available space to fit the unpinned data.
|
||||
*/
|
||||
- (void)unPin;
|
||||
|
||||
/**
|
||||
* Removes locally cached data regardless of the pinning status.
|
||||
*/
|
||||
- (void)removeLocal;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* `AWSContentManagerConfiguration` is the configuration object for `AWSContentManager` class.
|
||||
*/
|
||||
@interface AWSContentManagerConfiguration: NSObject
|
||||
|
||||
@property (nonatomic, readonly) AWSServiceConfiguration *serviceConfiguration;
|
||||
@property (nonatomic, readonly) NSString *bucketName;
|
||||
@property (nonatomic, readonly, nullable) NSString *cloudFrontURL;
|
||||
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSContentManagerConfiguration` using the default service configuration and specified bucket name. Use this as the configuration object for AWSContentManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration
|
||||
|
||||
let contentManagerConfiguration = AWSContentManagerConfiguration(bucketName: "myBucket")
|
||||
|
||||
AWSContentManager.register(with: contentManagerConfiguration, forKey: "defaultManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSContentManagerConfiguration *contentManagerConfiguration = [[AWSContentManager alloc] initWithBucketName:@"myBucketName"];
|
||||
[AWSContentManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"defaultManager"];
|
||||
|
||||
|
||||
@param bucketName Name of the bucket for manager
|
||||
@return an instance of AWSUserFileManagerConfiguration
|
||||
*/
|
||||
- (instancetype)initWithBucketName:(NSString *)bucketName;
|
||||
|
||||
/**
|
||||
Returns an instance of`AWSContentManagerConfiguration` using the specified bucket name, CloudFront URL and the default service configuration. Use this as the configuration object for AWSContentManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration;
|
||||
|
||||
let contentManagerConfiguration = AWSContentManagerConfiguration(bucketName: "myBucket", cloudFrontURL: "https:/a.b.myurl")
|
||||
|
||||
AWSContentManager.register(with: contentManagerConfiguration, forKey: "defaultManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSContentManagerConfiguration *contentManagerConfiguration = [[AWSContentManager alloc] initWithBucketName:@"myBucketName"
|
||||
cloudFrontURL:@"https:/a.b.myurl"];
|
||||
[AWSContentManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"defaultManager"];
|
||||
|
||||
|
||||
@param bucketName Name of the bucket for manager
|
||||
@param cloudFrontURL CloudFront URL for the bucket if enabled; nil otherwise
|
||||
@return an instance of AWSUserFileManagerConfiguration
|
||||
*/
|
||||
- (instancetype)initWithBucketName:(NSString *)bucketName
|
||||
cloudFrontURL:(nullable NSString *)cloudFrontURL;
|
||||
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSContentManagerConfiguration` using the specified bucket name, CloudFront URL and service configuration. Use this as the configuration object for AWSContentManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
|
||||
let contentManagerConfiguration = AWSContentManagerConfiguration(bucketName: "myBucket", cloudFrontURL: "https:/a.b.myurl", serviceConfiguration: configuration)
|
||||
|
||||
AWSContentManager.register(with: contentManagerConfiguration, forKey: "USWest2BucketContentManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSContentManagerConfiguration *contentManagerConfiguration = [[AWSContentManager alloc] initWithBucketName:@"myBucketName"
|
||||
cloudFrontURL:@"https:/a.b.myurl"
|
||||
serviceConfiguration:configuration];
|
||||
[AWSContentManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"USWest2BucketContentManager"];
|
||||
|
||||
|
||||
@param bucketName Name of the bucket for manager
|
||||
@param cloudFrontURL CloudFront URL for the bucket if enabled; nil otherwise
|
||||
@param serviceConfiguration AWSServiceConfiguration for the bucket; nil for default configuration
|
||||
@return an instance of AWSUserFileManagerConfiguration
|
||||
*/
|
||||
- (instancetype)initWithBucketName:(NSString *)bucketName
|
||||
cloudFrontURL:(nullable NSString *)cloudFrontURL
|
||||
serviceConfiguration:(nullable AWSServiceConfiguration *)serviceConfiguration;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// AWSFacebookSignInProvider.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AWSSignInProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
FOUNDATION_EXPORT NSString *const AWSFacebookSignInProviderKey;
|
||||
|
||||
/**
|
||||
* `AWSFacebookSignInProvider` adopts the `AWSSignInProvider` protocol.
|
||||
*
|
||||
* It works with the FacebookLoginSDK internally and uses the Facebook App ID specified in the info.plist file.
|
||||
*/
|
||||
@interface AWSFacebookSignInProvider : NSObject <AWSSignInProvider>
|
||||
|
||||
/**
|
||||
Fetches the singleton instance of AWSFacebookSignInProvider.
|
||||
|
||||
@return the singleton instance of AWSFacebookSignInProvider
|
||||
*/
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
Sets the login behavior of the Facebook SignIn SDK.
|
||||
Choices are listed in enum FBSDKLoginBehavior.
|
||||
Default behaviors for iOS:
|
||||
9+ SFSafariViewController used.
|
||||
8 WebViewController used.
|
||||
@loginBehavior a FBSDKLoginBehavior enum entry
|
||||
*/
|
||||
- (void)setLoginBehavior:(NSUInteger)loginBehavior;
|
||||
|
||||
/**
|
||||
Sets the permissions requested during login.
|
||||
Default behavior is no permissions are required.
|
||||
*/
|
||||
- (void)setPermissions:(NSArray *)permissions;
|
||||
|
||||
/**
|
||||
Sets the ViewController used for Facebook SignIn.
|
||||
Defaults to nil and handled by Facebook SDK.
|
||||
*/
|
||||
- (void)setViewControllerForFacebookSignIn:(UIViewController *)signInViewController;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// AWSGoogleSignInProvider.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AWSSignInProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
FOUNDATION_EXPORT NSString *const AWSGoogleSignInProviderKey;
|
||||
|
||||
/**
|
||||
* `AWSGoogleSignInProvider` adopts the `AWSSignInProvider` protocol.
|
||||
*
|
||||
* It works with the Google Sign In SDK internally and requires the Google Client ID provided by Google.
|
||||
*/
|
||||
@interface AWSGoogleSignInProvider : NSObject <AWSSignInProvider>
|
||||
|
||||
/**
|
||||
Fetches the shared instance for AWSGoogleSignInProvider.
|
||||
|
||||
@return the single instance of AWSGoogleSignInProvider
|
||||
*/
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
Sets the scopes required by the app during login.
|
||||
Defaults are openid and profile.
|
||||
*/
|
||||
- (void)setScopes:(NSArray *)scopes;
|
||||
|
||||
/**
|
||||
Sets the ViewController used for Google SignIn.
|
||||
Defaults to rootViewController in keyWindow during signin.
|
||||
*/
|
||||
- (void)setViewControllerForGoogleSignIn:(UIViewController *)signInViewController;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,57 @@
|
||||
//
|
||||
// AWSHubspotAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSAuthorizationManager.h"
|
||||
|
||||
@interface AWSHubspotAuthorizationManager : AWSAuthorizationManager
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user during OAuth2.0
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Customize the flow.
|
||||
*
|
||||
* @param clientID The client ID provided by Hubspot
|
||||
* @param portalID The portal ID provided by Hubspot
|
||||
* @param redirectURI The redirect URI that your app has registered
|
||||
* i.e. https://mysampleapp.amazonaws.com/hubspot/success
|
||||
*/
|
||||
- (void)configureWithClientID:(NSString * _Nonnull)clientID
|
||||
portalID:(NSString * _Nonnull)portalID
|
||||
redirectURI:(NSString * _Nonnull)redirectURI;
|
||||
|
||||
/**
|
||||
* Offline Access offline This application can make API requests on behalf of the user when
|
||||
* the user is offline (not actively using the app). You will receive
|
||||
* a refresh token when the user authenticates that you can store to
|
||||
* gain access to a new, valid access token programtically using the
|
||||
* refresh token method.
|
||||
* Contacts Read/Write contacts-rw This application reads your contact information, as well as creates
|
||||
* new contacts, contact lists, and contact properties. It can also
|
||||
* modify existing contacts, properties, and contact lists.
|
||||
* Contacts Read-Only contacts-ro This application can read your contact information, as well as
|
||||
* information about your contact properties and contact lists.
|
||||
* Blog Read/Write blog-rw This application can read your blog data, including posts and
|
||||
* comments, as well as create new blog posts and comments.
|
||||
* Blog Read-Only blog-ro This application can read your blog data, including posts and comments.
|
||||
* Events Read/Write events-rw This application can read your marketing events, as well as post
|
||||
* new ones into your HubSpot account.
|
||||
* Keywords Read/Write keyword-rw This application can read your keyword data, as well as insert new
|
||||
* ones into your HubSpot account.
|
||||
*
|
||||
* @param scope Specify the amount of access the user would like.
|
||||
* i.e. @"contacts-rw"
|
||||
* @"contacts-rw+blog-rw"
|
||||
*/
|
||||
- (void)setScope:(NSString * _Nonnull)scope;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// AWSIdentityManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AWSCore/AWSCore.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AWSSignInProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
FOUNDATION_EXPORT NSString *const AWSIdentityManagerDidSignInNotification;
|
||||
FOUNDATION_EXPORT NSString *const AWSIdentityManagerDidSignOutNotification;
|
||||
|
||||
@interface AWSIdentityManager : NSObject<AWSIdentityProviderManager>
|
||||
|
||||
/**
|
||||
* Indicates whether the user is signed-in or not.
|
||||
* @return true if user is signed-in
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isLoggedIn) BOOL loggedIn;
|
||||
|
||||
/**
|
||||
* URL for the user's image, if user is signed-in with a third party identity provider,
|
||||
* like Facebook or Google.
|
||||
* @return url of image file, if user is signed-in
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSURL * imageURL;
|
||||
|
||||
/**
|
||||
* User name acquired from third party identity provider, such as Facebook or Google.
|
||||
* @return user name, if user is signed-in
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString * userName;
|
||||
|
||||
/**
|
||||
* Amazon Cognito User Identity ID. This uniquely identifies the user, regardless of
|
||||
* whether or not the user is signed-in, if User Sign-in is enabled in the project.
|
||||
* @return unique user identifier
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString *identityId;
|
||||
|
||||
/**
|
||||
* Amazon Cognito Credentials Provider. This is the credential provider used by the Identity Manager.
|
||||
*
|
||||
* @return the cognito credentials provider
|
||||
*/
|
||||
@property (nonatomic, readonly, strong) AWSCognitoCredentialsProvider *credentialsProvider;
|
||||
|
||||
/**
|
||||
Returns the Identity Manager singleton instance configured using the information provided in `Info.plist` file.
|
||||
|
||||
*Swift*
|
||||
|
||||
let identityManager = AWSIdentityManager.default()
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSIdentityManager *identityManager = [AWSIdentityManager defaultIdentityManager];
|
||||
*/
|
||||
+ (instancetype)defaultIdentityManager;
|
||||
|
||||
/**
|
||||
* Signs the user out of whatever third party identity provider they used to sign in.
|
||||
* @param completionHandler used to callback application with async operation results
|
||||
*/
|
||||
- (void)logoutWithCompletionHandler:(void (^)(id _Nullable result, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
* Signs the user in with an identity provider. Note that even if User Sign-in is not
|
||||
* enabled in the project, the user is still signed-in with the Guest type provider.
|
||||
* @param signInProviderType provider type
|
||||
* @param completionHandler used to callback application with async operation results
|
||||
*/
|
||||
- (void)loginWithSignInProvider:(id<AWSSignInProvider>)signInProvider
|
||||
completionHandler:(void (^)(id _Nullable result, NSError * _Nullable error))completionHandler NS_SWIFT_NAME(login(signInProvider:completionHandler:));
|
||||
|
||||
/**
|
||||
* Attempts to resume session with the previous sign-in provider.
|
||||
* @param completionHandler used to callback application with async operation results
|
||||
*/
|
||||
- (void)resumeSessionWithCompletionHandler:(void (^)(id _Nullable result, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
* Passes parameters used to launch the application to the current identity provider. For some
|
||||
* third party providers, this completes the User Sign-in call flow, which used a browser to
|
||||
* get information from the user, directly. The current sign-in provider will be set to nil if
|
||||
* the sign-in provider is not registered using `registerAWSSignInProvider:forKey` method of
|
||||
* `AWSSignInProviderFactory` class.
|
||||
* @param application application
|
||||
* @param launchOptions options used to launch the application
|
||||
* @return true if this call handled the operation
|
||||
*/
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions;
|
||||
|
||||
/**
|
||||
* Passes parameters used to launch the application to the current identity provider. For some
|
||||
* third party providers, this completes the User Sign-in call flow, which used a browser to
|
||||
* get information from the user, directly.
|
||||
* @param application application
|
||||
* @param url url used to open the application
|
||||
* @param sourceApplication source application
|
||||
* @param annotation annotation
|
||||
* @return true if this call handled the operation
|
||||
*/
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
openURL:(NSURL *)url
|
||||
sourceApplication:(nullable NSString *)sourceApplication
|
||||
annotation:(id)annotation;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// AWSMSDynamicsAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSAuthorizationManager.h"
|
||||
|
||||
@interface AWSMSDynamicsAuthorizationManager : AWSAuthorizationManager
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user during OAuth2.0
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Customize the flow.
|
||||
*
|
||||
* @param clientID The client ID provided by Microsoft Dynamics
|
||||
* @param redirectURI The redirect URI you provided Microsoft Dynamics
|
||||
* i.e. https://mysampleapp.amazonaws.com/msdynamics/success
|
||||
* @param resource The URL of the resource you will access
|
||||
*/
|
||||
- (void)configureWithClientID:(NSString * _Nonnull)clientID
|
||||
redirectURI:(NSString * _Nonnull)redirectURI
|
||||
resource:(NSString * _Nonnull)resource;
|
||||
/**
|
||||
* @param The version of Microsoft Dynamics API you are using.
|
||||
* The default value is "v8.0"
|
||||
*/
|
||||
- (void)setAPIVersion:(NSString * _Nonnull)apiVersion;
|
||||
|
||||
/**
|
||||
* @return The token type. Available after user authorizes app.
|
||||
* i.e. Bearer
|
||||
*/
|
||||
- (NSString * _Nullable)getTokenType;
|
||||
|
||||
/**
|
||||
* @return The resource you will access in Microsoft Dynamics
|
||||
* with the API version attached to the end
|
||||
* i.e. https://emhawsapps.crm.dynamics.com
|
||||
*/
|
||||
- (NSString * _Nullable)getResourceURL;
|
||||
|
||||
/**
|
||||
* @return the accessToken used for API calls
|
||||
*/
|
||||
- (NSString * _Nullable)getAccessToken;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// AWSMarketoAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSAuthorizationManager.h"
|
||||
|
||||
@interface AWSMarketoAuthorizationManager : AWSAuthorizationManager
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user for Marketo
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Customize the flow.
|
||||
*
|
||||
* @param clientID Client ID provided by Salesforce.
|
||||
* @param redirectURI Should be you're bundle ID or universal URL
|
||||
* i.e. com.amazonaws.mysampleapp://salesforce/success
|
||||
* https://mysampleapp.amazonaws.com/success
|
||||
* @return the singleton
|
||||
*/
|
||||
- (void)configureWithIdentityURI:(NSString * _Nonnull)identityURI
|
||||
restApiURI:(NSString * _Nonnull)restApiURI;
|
||||
|
||||
/**
|
||||
* @param clientID Specify the Client ID provided by Marketo.
|
||||
* i.e. @"abc123...-abc123...-..."
|
||||
*/
|
||||
- (void)setClientID:(NSString * _Nonnull)clientID;
|
||||
|
||||
/**
|
||||
* @param clientSecret Specify the Client Secret provided by Marketo.
|
||||
* i.e. @"aBc123..."
|
||||
*/
|
||||
- (void)setClientSecret:(NSString * _Nonnull)clientSecret;
|
||||
|
||||
/**
|
||||
* @return The access token used for API calls
|
||||
*/
|
||||
- (NSString * _Nullable)getAccessToken;
|
||||
|
||||
/**
|
||||
* @return The identity URI used during authorization and API calls
|
||||
*/
|
||||
- (NSString * _Nullable)getIdentityURI;
|
||||
|
||||
/**
|
||||
* @return The REST API URI used during authorization and API calls
|
||||
*/
|
||||
- (NSString * _Nullable)getRestApiURI;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// AWSMobileHubHelper.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSContentManager.h"
|
||||
#import "AWSCloudLogic.h"
|
||||
#import "AWSIdentityManager.h"
|
||||
#import "AWSPushManager.h"
|
||||
#import "AWSFacebookSignInProvider.h"
|
||||
#import "AWSGoogleSignInProvider.h"
|
||||
#import "AWSUserFileManager.h"
|
||||
#import "AWSSignInProviderFactory.h"
|
||||
#import "AWSSAMLSignInProvider.h"
|
||||
#import "AWSCognitoUserPoolsSignInProvider.h"
|
||||
#import "AWSAuthorizationManager.h"
|
||||
#import "AWSSalesforceAuthorizationManager.h"
|
||||
#import "AWSZendeskAuthorizationManager.h"
|
||||
#import "AWSMSDynamicsAuthorizationManager.h"
|
||||
#import "AWSQuickbooksAuthorizationManager.h"
|
||||
#import "AWSHubspotAuthorizationManager.h"
|
||||
#import "AWSMarketoAuthorizationManager.h"
|
||||
500
My Mind/My Mind/AmazonAws/AWSMobileHubHelper.framework/Headers/AWSPushManager.h
Executable file
500
My Mind/My Mind/AmazonAws/AWSMobileHubHelper.framework/Headers/AWSPushManager.h
Executable file
@@ -0,0 +1,500 @@
|
||||
//
|
||||
// AWSPushManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AWSCore/AWSCore.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
The error domain for `PushManager`.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const AWSPushManagerErrorDomain;
|
||||
|
||||
/**
|
||||
The error code for `AWSPushManagerErrorDomain`.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, AWSPushManagerErrorType){
|
||||
/**
|
||||
An unknown error. This should not happen.
|
||||
*/
|
||||
AWSPushManagerErrorTypeUnknown,
|
||||
/**
|
||||
The device token returned by the OS is invalid and cannot be processed.
|
||||
*/
|
||||
AWSPushManagerErrorTypeInvalidDeviceToken,
|
||||
/**
|
||||
Unsubscribe requests failed while disabling `PushManager`.
|
||||
*/
|
||||
AWSPushManagerErrorTypeUnsubscribeFailed,
|
||||
};
|
||||
|
||||
@class AWSPushManager;
|
||||
@class AWSPushTopic;
|
||||
@class AWSPushManagerConfiguration;
|
||||
|
||||
@protocol AWSPushManagerDelegate;
|
||||
@protocol AWSPushTopicDelegate;
|
||||
|
||||
/**
|
||||
The Push Manager registers the app on the device with Apple Push Notification Service (APNS) and registers the resulting device token in Amazon SNS. The result of this registration process is an Amazon SNS Endpoint ARN, which can be used to send push notifications directly to a specific device. The Push Manager also manages Amazon SNS topic subscriptions, allowing the app to subscribe to Amazon SNS topics, which let you target groups of devices with push notifications. Requires the AWSSNS framework of AWSiOSSDK.
|
||||
*/
|
||||
@interface AWSPushManager : NSObject
|
||||
|
||||
/**
|
||||
Indicates if `PushManager` is enabled or disabled.
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isEnabled) BOOL enabled;
|
||||
|
||||
/**
|
||||
The device token returned by iOS.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString *deviceToken;
|
||||
|
||||
/**
|
||||
The application platform endpoint ARN for Amazon SNS.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString *endpointARN;
|
||||
|
||||
/**
|
||||
The application platform ARN for the app.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString *platformARN;
|
||||
|
||||
/**
|
||||
A list of topic ARNs selected during project configuraiton on AWS Mobile Hub from the `Info.plist` file.
|
||||
If a custom helper client is used, it would contain the topic ARNs specified in AWSPushManagerConfiguration object.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSArray<NSString *> * topicARNs;
|
||||
|
||||
/**
|
||||
The list of `PushTopic`.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSArray<AWSPushTopic *> *topics;
|
||||
|
||||
/**
|
||||
The delegate for receiving `PushManager` and `PushTopic` events.
|
||||
*/
|
||||
@property (nonatomic, weak) id<AWSPushManagerDelegate, AWSPushTopicDelegate> delegate;
|
||||
|
||||
/**
|
||||
Returns the default Push Manager singleton instance configured using the information provided in `Info.plist` file.
|
||||
|
||||
*Swift*
|
||||
|
||||
let pushManager = AWSPushManager.default()
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSPushManager *pushManager = [AWSPushManager defaultPushManager];
|
||||
*/
|
||||
+ (instancetype)defaultPushManager;
|
||||
|
||||
/**
|
||||
Creates a helper client for `AWSPushManager` for specified configuration with mentioned key.
|
||||
Use this method only if you require a helper client with specific configuration.
|
||||
|
||||
For example, set the configuration in `- application:didFinishLaunchingWithOptions:`
|
||||
|
||||
*Swift*
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration
|
||||
|
||||
let pushManagerConfiguration = AWSPushManagerConfiguration(snsPlatformARN: "SNS_PLATFORM_ARN")
|
||||
|
||||
AWSPushManager.register(with: pushManagerConfiguration, forKey: "defaultPushManager")
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSPushManagerConfiguration *pushManagerConfiguration = [[AWSPushManager alloc] initWithSNSPlatformARN:@"SNS_PLATFORM_ARN"];
|
||||
[AWSPushManager registerPushManagerWithConfiguration:pushManagerConfiguration
|
||||
forKey:@"defaultPushManager"];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let pushmanager = AWSPushManager(forKey: "defaultPushManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSPushManager *pushmanager = [AWSPushManager pushManagerForKey:@"defaultPushManager"];
|
||||
|
||||
@warning After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
|
||||
|
||||
@param pushManagerConfiguration AWSPushManagerConfiguration object for the manager.
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)registerPushManagerWithConfiguration:(AWSPushManagerConfiguration *)pushManagerConfiguration
|
||||
forKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Retrieves the helper client associated with the key. You need to call `+ registerPushManagerWithConfiguration:forKey:` before invoking this method. If `+ registerPushManagerWithConfiguration:forKey:` has not been called in advance or the key does not exist, this method returns `nil`.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration
|
||||
|
||||
let pushManagerConfiguration = AWSPushManagerConfiguration(snsPlatformARN: "SNS_PLATFORM_ARN")
|
||||
|
||||
AWSPushManager.register(with: pushManagerConfiguration, forKey: "defaultPushManager")
|
||||
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSPushManagerConfiguration *pushManagerConfiguration = [[AWSPushManager alloc] initWithSNSPlatformARN:@"SNS_PLATFORM_ARN"];
|
||||
[AWSPushManager registerPushManagerWithConfiguration:pushManagerConfiguration
|
||||
forKey:@"defaultPushManager"];
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let Pushmanager = AWSPushManager(forKey: "defaultPushManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSPushManager *Pushmanager = [AWSPushManager PushManagerForKey:@"defaultPushManager"];
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
@return An instance of AWSPushManager for specified key.
|
||||
*/
|
||||
+ (instancetype)PushManagerForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Removes the helper client associated with the key and release it.
|
||||
|
||||
*Swift*
|
||||
|
||||
AWSPushManager.remove(forKey: "USWest2PushManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
[AWSPushManager removePushManagerForKey:@"USWest2PushManager"];
|
||||
|
||||
@warning Before calling this method, make sure no method is running on this client.
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)removePushManagerForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Initializes `PushManager` with the list of topic ARNs.
|
||||
|
||||
@param topicARNs A list of topic ARNs from Amazon SNS. It needs to be an `NSArray` containing only `NSString`.
|
||||
*/
|
||||
- (void)registerTopicARNs:(NSArray<NSString *> *)topicARNs;
|
||||
|
||||
/**
|
||||
Returns a topic associated with the specified topic ARN.
|
||||
|
||||
@param topicARN A topic ARN from Amazon SNS.
|
||||
|
||||
@return The topic with the specified topic ARN.
|
||||
*/
|
||||
- (AWSPushTopic *)topicForTopicARN:(NSString *)topicARN;
|
||||
|
||||
/**
|
||||
Initiates the process to enable Push Notifications.
|
||||
When called for the first time, it asks the user for the permission to enable Push Notifications. If the user decline it, it fails to enable Push Notifications.
|
||||
|
||||
On success, it calls `- pushManagerDidRegister:` from `AWSPushManagerDelegate`.
|
||||
On failure, it calls `- pushManager:didFailToRegisterWithError:` from `AWSPushManagerDelegate`.
|
||||
*/
|
||||
- (void)registerForPushNotifications;
|
||||
|
||||
/**
|
||||
Unsubscribes from all subscribed topics, then marks `PushManager` as disabled.
|
||||
|
||||
On success, it calls `- pushManagerDidDisable:` from `AWSPushManagerDelegate`.
|
||||
On failure, it calls `- pushManager:didFailToDisableWithError:` from `AWSPushManagerDelegate`.
|
||||
*/
|
||||
- (void)disablePushNotifications;
|
||||
|
||||
/**
|
||||
Intercepts the `- application:didFinishLaunchingWithOptions:` application delegate.
|
||||
|
||||
@param application Your singleton app object.
|
||||
@param launchOptions A dictionary indicating the reason the app was launched (if any). The contents of this dictionary may be empty in situations where the user launched the app directly. For information about the possible keys in this dictionary and how to handle them, see Launch Options Keys.
|
||||
*/
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions;
|
||||
|
||||
/**
|
||||
Intercepts the `- application:didRegisterForRemoteNotificationsWithDeviceToken:` application delegate.
|
||||
|
||||
@param application The app object that initiated the remote-notification registration process.
|
||||
@param deviceToken A token that identifies the device to APNs.
|
||||
*/
|
||||
- (void)interceptApplication:(UIApplication *)application
|
||||
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
|
||||
|
||||
/**
|
||||
Intercepts the `- application:didFailToRegisterForRemoteNotificationsWithError:` application delegate.
|
||||
|
||||
@param application The app object that initiated the remote-notification registration process.
|
||||
@param error An `NSError` object that encapsulates information why registration did not succeed.
|
||||
*/
|
||||
- (void)interceptApplication:(UIApplication *)application
|
||||
didFailToRegisterForRemoteNotificationsWithError:(nullable NSError *)error;
|
||||
|
||||
/**
|
||||
Intercepts the `- application:didReceiveRemoteNotification:` application delegate.
|
||||
|
||||
@param application The app object that received the remote notification.
|
||||
@param userInfo A dictionary that contains information related to the remote notification, potentially including a badge number for the app icon, an alert sound, an alert message to display to the user, a notification identifier, and custom data. The provider originates it as a JSON-defined dictionary that iOS converts to an `NSDictionary` object; the dictionary may contain only property-list objects plus `NSNull`.
|
||||
*/
|
||||
- (void)interceptApplication:(UIApplication *)application
|
||||
didReceiveRemoteNotification:(nullable NSDictionary *)userInfo;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
A topic object.
|
||||
*/
|
||||
@interface AWSPushTopic : NSObject
|
||||
|
||||
/**
|
||||
Initializes the topic object with a given topic ARN.
|
||||
|
||||
@param topicARN A topic ARN from Amazon SNS.
|
||||
|
||||
@return An initialized instance of `PushTopic`.
|
||||
*/
|
||||
- (instancetype)initWithTopicARN:(NSString *)topicARN
|
||||
pushManager:(AWSPushManager *)pushManager;
|
||||
|
||||
/**
|
||||
The topic ARN.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *topicARN;
|
||||
|
||||
/**
|
||||
The topic name.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSString *topicName;
|
||||
|
||||
/**
|
||||
Indicates if the device is registered for the topic.
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isSubscribed) BOOL subscribed;
|
||||
|
||||
/**
|
||||
The subscription ARN from Amazon SNS.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString *subscriptionARN;
|
||||
|
||||
/**
|
||||
Subscribes the device to the topic.
|
||||
|
||||
On success, it calls `- topicDidSubscribe:` from `AWSPushTopicDelegate`.
|
||||
On failure, it calls `topic:didFailToSubscribeWithError:` from `AWSPushTopicDelegate`.
|
||||
*/
|
||||
- (void)subscribe;
|
||||
|
||||
/**
|
||||
Unsubscribes the device from the topic.
|
||||
|
||||
On success, it calls `- topicDidUnsubscribe:` from `AWSPushTopicDelegate`.
|
||||
On failure, it calls `topic:didFailToUnsubscribeWithError:` from `AWSPushTopicDelegate`.
|
||||
*/
|
||||
- (void)unsubscribe;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/**
|
||||
A delegate for receiving `PushManager` events.
|
||||
*/
|
||||
@protocol AWSPushManagerDelegate <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
Indicates the success of the `- registerForPushNotifications` call.
|
||||
|
||||
@param pushManager An instance of `PushManager`.
|
||||
*/
|
||||
- (void)pushManagerDidRegister:(AWSPushManager *)pushManager;
|
||||
|
||||
/**
|
||||
Indicates the failure of the `- registerForPushNotifications` call.
|
||||
|
||||
@param pushManager An instance of `PushManager`.
|
||||
@param error An `NSError` object that encapsulates information why registration did not succeed.
|
||||
*/
|
||||
- (void)pushManager:(AWSPushManager *)pushManager
|
||||
didFailToRegisterWithError:(NSError *)error;
|
||||
|
||||
/**
|
||||
Indicates the device received a Push Notifiation.
|
||||
|
||||
@param userInfo A dictionary that contains information related to the remote notification, potentially including a badge number for the app icon, an alert sound, an alert message to display to the user, a notification identifier, and custom data. The provider originates it as a JSON-defined dictionary that iOS converts to an `NSDictionary` object; the dictionary may contain only property-list objects plus `NSNull`.
|
||||
*/
|
||||
- (void)pushManager:(AWSPushManager *)pushManager
|
||||
didReceivePushNotification:(NSDictionary *)userInfo;
|
||||
|
||||
/**
|
||||
Indicates the success of the `- disablePushNotifications` call.
|
||||
|
||||
@param pushManager An instance of `PushManager`.
|
||||
*/
|
||||
- (void)pushManagerDidDisable:(AWSPushManager *)pushManager;
|
||||
|
||||
/**
|
||||
Indicates the failure of the `- disablePushNotifications` call.
|
||||
|
||||
@param pushManager An instance of `PushManager`.
|
||||
@param error An `NSError` object that encapsulates information why disable did not succeed.
|
||||
*/
|
||||
- (void)pushManager:(AWSPushManager *)pushManager
|
||||
didFailToDisableWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
A delegate for receiving `PushTopic` events.
|
||||
*/
|
||||
@protocol AWSPushTopicDelegate <NSObject>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
Indicates the subscribe succeeded.
|
||||
|
||||
@param topic The topic object.
|
||||
*/
|
||||
- (void)topicDidSubscribe:(AWSPushTopic *)topic;
|
||||
|
||||
/**
|
||||
Indicates the subscribe failed.
|
||||
|
||||
@param topic The topic object.
|
||||
@param error An `NSError` object that encapsulates information why subscribe did not succeed.
|
||||
*/
|
||||
- (void)topic:(AWSPushTopic *)topic
|
||||
didFailToSubscribeWithError:(NSError *)error;
|
||||
|
||||
/**
|
||||
Indicates the unsubscribe succeeded.
|
||||
|
||||
@param topic The topic object.
|
||||
*/
|
||||
- (void)topicDidUnsubscribe:(AWSPushTopic *)topic;
|
||||
|
||||
/**
|
||||
Indicates the unsubscribe failed.
|
||||
|
||||
@param topic The topic object.
|
||||
@param error An `NSError` object that encapsulates information why unsubscribe did not succeed.
|
||||
*/
|
||||
- (void)topic:(AWSPushTopic *)topic
|
||||
didFailToUnsubscribeWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* `AWSPushManagerConfiguration` is the configuration object for `AWSPushManager` class.
|
||||
*/
|
||||
@interface AWSPushManagerConfiguration : NSObject
|
||||
|
||||
@property (nonatomic, readonly, nullable) AWSServiceConfiguration *serviceConfiguration;
|
||||
@property (nonatomic, readonly) NSString *platformARN;
|
||||
@property (nonatomic, readonly, nullable) NSArray<NSString *> *topicARNs;
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSPushManagerConfiguration`. Use this as the configuration object for AWSPushManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.default().defaultServiceConfiguration = configuration
|
||||
|
||||
let pushManagerConfiguration = AWSPushManagerConfiguration(snsPlatformARN: "SNS_PLATFORM_ARN")
|
||||
|
||||
AWSPushManager.register(with: pushManagerConfiguration, forKey: "defaultPushManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSPushManagerConfiguration *pushManagerConfiguration = [[AWSPushManager alloc] initWithSNSPlatformARN:@"SNS_PLATFORM_ARN"];
|
||||
[AWSPushManager registerPushManagerWithConfiguration:pushManagerConfiguration
|
||||
forKey:@"defaultPushManager"];
|
||||
|
||||
@param snsPlatformARN The SNS Platform ARN
|
||||
|
||||
@return an instance of `AWSPushManagerConfiguration`
|
||||
*/
|
||||
- (instancetype)initWithPlatformARN:(NSString *)platformARN;
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSPushManagerConfiguration`. Use this as the configuration object for AWSPushManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialProvider)
|
||||
|
||||
let pushManagerConfiguration = AWSPushManagerConfiguration(snsPlatformARN: "SNS_PLATFORM_ARN", topicARNs: nil, serviceConfiguration: configuration)
|
||||
|
||||
AWSPushManager.register(with: pushManagerConfiguration, forKey: "defaultPushManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
|
||||
credentialsProvider:credentialsProvider];
|
||||
|
||||
AWSPushManagerConfiguration *pushManagerConfiguration = [[AWSPushManager alloc] initWithSNSPlatformARN:@"SNS_PLATFORM_ARN"
|
||||
topicARNs:nil
|
||||
serviceConfiguration:configuration];
|
||||
[AWSPushManager registerPushManagerWithConfiguration:pushManagerConfiguration
|
||||
forKey:@"defaultPushManager"];
|
||||
|
||||
@param platformARN The SNS Platform ARN
|
||||
@param topicARN The list of SNS topics that could be registered
|
||||
@param serviceConfiguration AWSServiceConfiguration object; nil for default configuration
|
||||
@return an instance of `AWSPushManagerConfiguration`
|
||||
*/
|
||||
- (instancetype)initWithPlatformARN:(NSString *)platformARN
|
||||
topicARNs:(nullable NSArray<NSString *> *)topicARNs
|
||||
serviceConfiguration:(nullable AWSServiceConfiguration *)serviceConfiguration;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// AWSQuickbooksAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSAuthorizationManager.h"
|
||||
|
||||
@interface AWSQuickbooksAuthorizationManager : AWSAuthorizationManager
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user during OAuth1.0
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Customize the flow.
|
||||
*
|
||||
* @param key The API key provided by Quickbooks
|
||||
* @param redirectURI The redirect URI you provided Zendesk
|
||||
* i.e. https://mysampleapp.amazonaws.com/zendesk/success
|
||||
*/
|
||||
- (void)configureWithAPIKey:(NSString * _Nonnull)key
|
||||
redirectURI:(NSString * _Nonnull)redirectURI;
|
||||
|
||||
/**
|
||||
* The secret must be set before attempting to authorize.
|
||||
* It is recommended that this secret be securely passed to this point.
|
||||
*
|
||||
* @param secret The API secret provided by Quickbooks
|
||||
* i.e. @"abc123"
|
||||
*/
|
||||
- (void)setAPISecret:(NSString * _Nonnull)secret;
|
||||
|
||||
/**
|
||||
* @return The API secret used to authorize
|
||||
*/
|
||||
- (NSString * _Nullable)getAPIKey;
|
||||
|
||||
/**
|
||||
* @return The API secret used to authorize
|
||||
*/
|
||||
- (NSString * _Nullable)getAPISecret;
|
||||
|
||||
/**
|
||||
* @return The access token, available after authorization
|
||||
*/
|
||||
- (NSString * _Nullable)getAccessToken;
|
||||
|
||||
/**
|
||||
* @return The token secret, available after authorization
|
||||
*/
|
||||
- (NSString * _Nullable)getAccessTokenSecret;
|
||||
|
||||
/**
|
||||
* @return The realm ID, available after authorization
|
||||
*/
|
||||
- (NSString * _Nullable)getRealmID;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,167 @@
|
||||
//
|
||||
// AWSSAMLSignInProvider.h
|
||||
// AWSMobileHubHelper
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSSignInProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* Any class over-riding the `AWSSAMLSignInProvider` class for implemeting `SAML` as a sign-in provider,
|
||||
* should also adopt the `AWSSAMLSignInProviderInstance` protocol.
|
||||
*/
|
||||
@protocol AWSSAMLSignInProviderInstance
|
||||
|
||||
/**
|
||||
* The shared instance of the class implementing `SAML` as a sign-in provider.
|
||||
*
|
||||
* @return the shared instance of the class implementing `SAML` as a sign-in provider.
|
||||
*/
|
||||
+ (id<AWSSignInProvider>)sharedInstance;
|
||||
|
||||
@end
|
||||
|
||||
@interface AWSSAMLSignInProvider : NSObject <AWSSignInProvider>
|
||||
|
||||
#pragma mark - Initializer
|
||||
|
||||
/*
|
||||
The only initializer for AWSSAMLSignInProvider. This initializer has to be used by the class over-riding AWSSAMLSignInProvider.
|
||||
@param uniqueIdentifier The unique identifier string for the SAML Sign In Provider
|
||||
@param identityProviderName The identifier provider name for SAML provider (the Identity Provider ARN for SAML)
|
||||
@return instance of AWSSAMLSignInProvider
|
||||
*/
|
||||
- (instancetype)initWithIdentifier:(NSString *)uniqueIdentifier
|
||||
identityProviderName:(NSString *)identityProviderName;
|
||||
|
||||
#pragma mark - Mandatory Override Methods
|
||||
|
||||
// The user is expected to over the methods in this pragma mark
|
||||
|
||||
/**
|
||||
* This method will be called when `loginWithSignInProvider` is invoked from `AWSIdentityManager`.
|
||||
* Developer is expected to call `setResult` on `taskCompletionSource` with the SAML login token on a successful login,
|
||||
* or `setError` when the login is cancelled or encounters an error.
|
||||
*
|
||||
* The token internally is stored in the keychain store, and a flag is set in `NSUserDefaults` indicating the user is logged in using this `SAML` sign-in provider.
|
||||
*
|
||||
* ** Objective-C ***
|
||||
* - (void)handleLoginWithTaskCompletionSource:(AWSTaskCompletionSource<NSString *> *)taskCompletionSource {
|
||||
* // handle login logic
|
||||
* if(loginSuccessful) {
|
||||
* [taskCompletionSource setResult:@"SuccessfullyGeneratedToken"];
|
||||
* } else {
|
||||
* [taskCompletionSource setError:error];
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* ** Swift **
|
||||
* func handleLogicWithTaskCompletionSource(taskCompletionSource: AWSTaskCompletionSource<String>) {
|
||||
* if(loginSuccessful) {
|
||||
* taskCompletionSource.setResult("SuccessfullyGeneratedToken")
|
||||
* } else {
|
||||
* taskCompletionSource.setError(error)
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* @param taskCompletionSource the `AWSTaskCompletionSource` object which is used to call `setResult` or `setError`
|
||||
*/
|
||||
- (void)handleLoginWithTaskCompletionSource:(AWSTaskCompletionSource<NSString *> *)taskCompletionSource;
|
||||
|
||||
/**
|
||||
* This method is called whenver the cognito credentials are refreshed or when app is loaded from background state / closed state.
|
||||
* The previous saved token can be fetched using `fetchStoredToken`, and if it is valid the same can be returned without refreshing.
|
||||
*
|
||||
* @return an instance of `AWSTask`. `task.result` should contain the valid token in case of successful token fetch, or `task.error` should be set
|
||||
*/
|
||||
- (AWSTask<NSString *>*)fetchLatestToken;
|
||||
|
||||
#pragma mark - Optional Override Methods
|
||||
|
||||
/**
|
||||
* Passes parameters used to launch the application to the current identity provider.
|
||||
* It can be used to complete the user sign-in call flow, which uses a browser to
|
||||
* get information from the user, directly. The current sign-in provider will be set to nil if
|
||||
* the sign-in provider is not registered using `registerAWSSignInProvider:forKey` method of
|
||||
* `AWSSignInProviderFactory` class.
|
||||
*
|
||||
* @param application application
|
||||
* @param launchOptions options used to launch the application
|
||||
* @return true if this call handled the operation
|
||||
*/
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions;
|
||||
|
||||
/**
|
||||
* Passes parameters used to launch the application to the current identity provider.
|
||||
* It can be used to complete the user sign-in call flow, which uses a browser to
|
||||
* get information from the user, directly. The developer should store a reference to
|
||||
* the `taskCompletionSource` instance provided by the `handleLoginWithTaskCompletionSouce`
|
||||
* method to set the result with successfully retrieved token.
|
||||
*
|
||||
* @param application application
|
||||
* @param url url used to open the application
|
||||
* @param sourceApplication source application
|
||||
* @param annotation annotation
|
||||
* @return true if this call handled the operation
|
||||
*/
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
openURL:(NSURL *)url
|
||||
sourceApplication:(nullable NSString *)sourceApplication
|
||||
annotation:(id)annotation;
|
||||
|
||||
#pragma mark - Instance Methods
|
||||
|
||||
/**
|
||||
* Sets the userName value of the signed-in user into a persistent store.
|
||||
* Should be called on a successful login to set the user name which is used by `AWSIdentityManager`.
|
||||
*
|
||||
* @param userName the user name of the signed-in user
|
||||
*/
|
||||
- (void)setUserName:(NSString *)userName;
|
||||
|
||||
/**
|
||||
* Sets the imageURL value of the signed-in user into a persistent store.
|
||||
* Should be called on a successful login to set the user name which is used by `AWSIdentityManager`.
|
||||
*
|
||||
* @param imageURL the image URL for a picture of the signed-in user
|
||||
*/
|
||||
- (void)setImageURL:(NSURL *)imageURL;
|
||||
|
||||
/**
|
||||
* Can be used to store a reference of teh view controller from which `loginWithSignInProvider` is invoked by `AWSIdentityManager`
|
||||
*
|
||||
* @param signInViewController the signInViewController object whose reference needs to be stored
|
||||
*/
|
||||
- (void)setViewControllerForSignIn:(UIViewController *)signInViewController;
|
||||
|
||||
/**
|
||||
* This method returns the view controller whose reference was stored using `setViewControllerForSignIn`
|
||||
*
|
||||
* @return the stored view controller if set, else `nil`
|
||||
*/
|
||||
- (UIViewController *)getViewControllerForSignIn;
|
||||
|
||||
/**
|
||||
* Returns the token stored in keychain as-is (without refreshing)
|
||||
*
|
||||
* @return the token if available in keychain, else `nil`
|
||||
*/
|
||||
- (NSString *)fetchStoredToken;
|
||||
|
||||
/**
|
||||
* Determines if the user is logged in based on the token available in keychain and if the login flag is set internally.
|
||||
*
|
||||
* @return `YES` if the user is logged in using `SAML` sign-in provider instance
|
||||
*/
|
||||
- (BOOL)isLoggedIn;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,43 @@
|
||||
//
|
||||
// AWSSalesforceAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSAuthorizationManager.h"
|
||||
|
||||
@interface AWSSalesforceAuthorizationManager : AWSAuthorizationManager
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user during OAuth2.0
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Customize the flow.
|
||||
*
|
||||
* @param clientID Client ID provided by Salesforce.
|
||||
* @param redirectURI Should be you're bundle ID or universal URL
|
||||
* i.e. com.amazonaws.mysampleapp://salesforce/success
|
||||
* https://mysampleapp.amazonaws.com/success
|
||||
* @return the singleton
|
||||
*/
|
||||
- (void)configureWithClientID:(NSString * _Nonnull)clientID redirectURI:(NSString * _Nonnull)redirectURI;
|
||||
|
||||
/**
|
||||
* @return The token type. Available after user authorizes app.
|
||||
* i.e. Bearer
|
||||
*/
|
||||
- (NSString * _Nullable)getTokenType;
|
||||
|
||||
/**
|
||||
* @return The instance Salesforce has assigned you. Available after user authorizes app.
|
||||
* i.e. https://na15.salesforce.com/
|
||||
*/
|
||||
- (NSString * _Nullable)getInstanceURL;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// AWSSignInProvider.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AWSCore/AWSCore.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class AWSIdentityManager;
|
||||
|
||||
/**
|
||||
* `AWSSignInProvider` protocol defines a list of methods and properties which a Sign-In Provider should implement.
|
||||
*
|
||||
* The AWSSignInProvider is implemented by difference Sign-In Providers like FacbookSignInProvider, GoogleSignInProvider, etc.
|
||||
*
|
||||
*/
|
||||
@protocol AWSSignInProvider <AWSIdentityProvider>
|
||||
|
||||
/**
|
||||
Determines if a user is logged in.
|
||||
*/
|
||||
@property (nonatomic, readonly, getter=isLoggedIn) BOOL loggedIn;
|
||||
|
||||
/**
|
||||
The URL for profile image of a user.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSURL *imageURL;
|
||||
|
||||
/**
|
||||
The User Name of a user.
|
||||
*/
|
||||
@property (nonatomic, readonly, nullable) NSString *userName;
|
||||
|
||||
/**
|
||||
The login handler method for the Sign-In Provider.
|
||||
The completionHandler will bubble back errors to the developers.
|
||||
*/
|
||||
- (void)login:(void (^)(id _Nullable result, NSError * _Nullable error))completionHandler;
|
||||
|
||||
/**
|
||||
The logout handler method for the Sign-In Provider.
|
||||
*/
|
||||
- (void)logout;
|
||||
|
||||
/**
|
||||
* Call this method on a successful login. This method should store a flag in persistent storage which determines if the user has signed-in using this sign-in provider.
|
||||
* This method is called by AWSIdentityManager on `interceptApplication:didFinishLaunchingWithOptions` method to set the current sign-in provider.
|
||||
*/
|
||||
- (void)setCachedLoginFlag;
|
||||
|
||||
/**
|
||||
* Clears the cached login flag. This method should be called during `logout` to clear the stored flag.
|
||||
*/
|
||||
- (void)clearCachedLoginFlag;
|
||||
|
||||
/**
|
||||
* Fetches the status of the cached login flag set using `setCachedLoginFlag`.
|
||||
*
|
||||
* @return `YES` if the setCachedLoginFlag is set.
|
||||
*/
|
||||
- (BOOL)isCachedLoginFlagSet;
|
||||
|
||||
/**
|
||||
The handler method for managing the session reload for the Sign-In Provider.
|
||||
*/
|
||||
- (void)reloadSession;
|
||||
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions;
|
||||
|
||||
- (BOOL)interceptApplication:(UIApplication *)application
|
||||
openURL:(NSURL *)url
|
||||
sourceApplication:(nullable NSString *)sourceApplication
|
||||
annotation:(id)annotation;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// AWSSignInProviderFactory.h
|
||||
// AWSMobileHubHelper
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AWSSignInProvider.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/*
|
||||
`AWSSignInProviderFactory` stores the instances of the sign in providers implemented using the protocol `AWSSignInProvider`. The instances registered with `AWSSignInProviderFactory` are fetched by `AWSIdentityManager` when `interceptApplication:didFinishLaunchingWithOptions` is called from `AWSMobileClient`.
|
||||
*/
|
||||
@interface AWSSignInProviderFactory : NSObject
|
||||
|
||||
// Fetches the shared instance of `AWSSignInProviderFactory`.
|
||||
+(instancetype)sharedInstance;
|
||||
|
||||
/**
|
||||
Registers the shared instance of sign in provider implementing `AWSSignInProvider` with specified key.
|
||||
|
||||
@param signInProvider The shared instance of sign in provider implementing `AWSSignInProvider` protocol.
|
||||
@param key A string to identify the signInProvider.
|
||||
**/
|
||||
-(void)registerAWSSignInProvider:(id<AWSSignInProvider>)signInProvider
|
||||
forKey:(NSString *)key NS_SWIFT_NAME(register(signInProvider:forKey:));
|
||||
|
||||
/**
|
||||
Fetches the shared instance of sign in provider implementing `AWSSignInProvider` with specified key.
|
||||
|
||||
@param key A string to identify the signInProvider.
|
||||
|
||||
@return The shared instance of sign in provider implementing `AWSSignInProvider` registered with specified key.
|
||||
**/
|
||||
-(id<AWSSignInProvider>)signInProviderForKey:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,358 @@
|
||||
//
|
||||
// AWSUserFileManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
#import <AWSCore/AWSCore.h>
|
||||
#import "AWSContentManager.h"
|
||||
|
||||
@class AWSLocalContent;
|
||||
@class AWSUserFileManagerConfiguration;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* `AWSUserFileManager` inherits from `AWSContentManager` and adds the upload capabilities.
|
||||
*
|
||||
* The User File Manager uploads and downloads files from Amazon S3. It caches downloaded
|
||||
* files locally on the device in a size-limited cache. Downloaded files may be pinned
|
||||
* to the cache, so that they are not automatically removed when the cache size limit
|
||||
* is exceeded. The User File Manager provides access to two folders in the Amazon S3 bucket,
|
||||
* one called "public/" for public files, which are accessible to any user of the app,
|
||||
* and one called "private/" which contains a sub-folder for each Amazon Cognito
|
||||
* identified user. Files in the user's private folder can only be accessed by that user.
|
||||
* The User File Manager serves as the application's interface into the file-related
|
||||
* functionality of the User Data Storage feature.
|
||||
* Requires the AWSS3 framework of AWSiOSSDK.
|
||||
*/
|
||||
@interface AWSUserFileManager : AWSContentManager
|
||||
|
||||
/**
|
||||
* The list of currently uploading contents.
|
||||
*/
|
||||
@property (nonatomic, readonly) NSArray<AWSLocalContent *> *uploadingContents;
|
||||
|
||||
/**
|
||||
Returns the default User File Manager singleton instance configured using the information provided in `Info.plist` file.
|
||||
|
||||
*Swift*
|
||||
|
||||
let userFileManager = AWSUserFileManager.defaultUserFileManager()
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSUserFileManager *userFileManager = [AWSUserFileManager defaultUserFileManager];
|
||||
|
||||
*/
|
||||
+ (instancetype)defaultUserFileManager NS_SWIFT_NAME(defaultUserFileManager());
|
||||
|
||||
/**
|
||||
Creates a helper client for AWSUserFileManager for specified configuration with mentioned key.
|
||||
Use this method only if you require a helper client with specific configuration.
|
||||
|
||||
For example, set the configuration in `- application:didFinishLaunchingWithOptions:`
|
||||
|
||||
*Swift*
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
let userFileManagerConfiguration = AWSUserFileManagerConfiguration(bucketName: "myBucket", serviceConfiguration: configuration)
|
||||
AWSUserFileManager.register(with: userFileManagerConfiguration, forKey: "USWest2BucketManager")
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSUserFileManagerConfiguration *userFileManagerConfiguration = [[AWSUserFileManager alloc] initWithBucketName:@"myBucketName"
|
||||
serviceConfiguration:configuration];
|
||||
[AWSUserFileManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"USWest2BucketManager"];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let userFilemanager = AWSUserFileManager(forKey: "USWest2BucketManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSUserFileManager *userFileManager = [AWSUserFileManager userFileManagerForKey:@"USWest2BucketManager"];
|
||||
|
||||
@warning After calling this method, do not modify the configuration object. It may cause unspecified behaviors.
|
||||
|
||||
@param userFileManagerConfiguration AWSUserFileManagerConfiguration object for the manager.
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)registerUserFileManagerWithConfiguration:(AWSUserFileManagerConfiguration *)userFileManagerConfiguration
|
||||
forKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Retrieves the helper client associated with the key. You need to call `+ registerUserFileManagerWithConfiguration:forKey:` before invoking this method. If `+ registerUserFileManagerWithConfiguration:forKey:` has not been called in advance or the key does not exist, this method returns `nil`.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
let userFileManagerConfiguration = AWSUserFileManagerConfiguration(bucketName: "myBucket", serviceConfiguration: configuration)
|
||||
AWSUserFileManager.register(with: userFileManagerConfiguration, forKey: "USWest2BucketManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSUserFileManagerConfiguration *userFileManagerConfiguration = [[AWSUserFileManager alloc] initWithBucketName:@"myBucketName"
|
||||
serviceConfiguration:configuration];
|
||||
[AWSUserFileManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"USWest2BucketManager"];
|
||||
|
||||
Then call the following to get the helper client:
|
||||
|
||||
*Swift*
|
||||
|
||||
let UserFilemanager = AWSUserFileManager(forKey: "USWest2BucketManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSUserFileManager *UserFileManager = [AWSUserFileManager UserFileManagerForKey:@"USWest2BucketManager"];
|
||||
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
@return An instance of AWSUserFileManager for specified key.
|
||||
*/
|
||||
+ (instancetype)UserFileManagerForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Removes the helper client associated with the key and release it.
|
||||
|
||||
*Swift*
|
||||
|
||||
AWSUserFileManager.remove(forKey: "USWest2BucketManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
[AWSUserFileManager removeUserFileManagerForKey:@"USWest2BucketManager"];
|
||||
|
||||
@warning Before calling this method, make sure no method is running on this client.
|
||||
|
||||
@param key A string to identify the helper client.
|
||||
*/
|
||||
+ (void)removeUserFileManagerForKey:(NSString *)key;
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSLocalContent`. You use this method to create an instance of `AWSLocalContent` to upload data to an Amazon S3 bucket with the specified key.
|
||||
|
||||
*Swift*
|
||||
|
||||
func uploadWithData(data: NSData, forKey key: String) {
|
||||
|
||||
let userFilemanager = AWSUserFileManager(forKey: "KeyUsedToRegister")
|
||||
let localContent = userFilemanager.localContent(with: data, key: key)
|
||||
localContent.uploadWithPinOnCompletion(..., progressBlock: ..., completionHandler: ...)
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (void)uploadWithData:(NSData *)data forKey:(NSString *)key {
|
||||
|
||||
AWSUserFileManager *userFileManager = [AWSUserFileManager userFileManagerForKey:@"KeyUsedToRegister"];
|
||||
AWSLocalContent *localContent = [self.manager localContentWithData:data
|
||||
key:key];
|
||||
[localContent uploadWithPinOnCompletion:...
|
||||
progressBlock:...
|
||||
completionHandler:...];
|
||||
}
|
||||
|
||||
@param data The data to be uploaded.
|
||||
@param key The Amazon S3 key.
|
||||
|
||||
@return An instance of `AWSLocalContent` that represents data to be uploaded.
|
||||
*/
|
||||
- (AWSLocalContent *)localContentWithData:(nullable NSData *)data
|
||||
key:(NSString *)key;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* A category to add remote file removal to `AWSContent`.
|
||||
*/
|
||||
@interface AWSContent(AWSUserFileManager)
|
||||
|
||||
/**
|
||||
Removes the remote file associated with `AWSContent`.
|
||||
|
||||
*Swift*
|
||||
|
||||
func removeContent(content: AWSContent) {
|
||||
content.removeRemoteContent(completionHandler: {(content: AWSContent?, error: NSError?) -> Void in
|
||||
if let error = error {
|
||||
print("Failed to delete an object from the remote server. \(error)")
|
||||
} else {
|
||||
print("Success")
|
||||
// Do something further
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (void)removeContent:(AWSContent *)content {
|
||||
[content removeRemoteContentWithCompletionHandler:^(AWSContent *content, NSError *error) {
|
||||
if (error) {
|
||||
NSLog(@"Failed to delete an object from the remote server. %@", error);
|
||||
} else {
|
||||
NSLog(@"Success");
|
||||
// Do something further
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@param completionHandler The completion handler block.
|
||||
*/
|
||||
- (void)removeRemoteContentWithCompletionHandler:(void(^ _Nullable)(AWSContent * _Nullable content, NSError * _Nullable error))completionHandler;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* A representation of the local content that may not exist in the Amazon S3 bucket yet. When uploading data to an S3 bucket, you first need to create an instance of this class.
|
||||
*/
|
||||
@interface AWSLocalContent : AWSContent
|
||||
|
||||
/**
|
||||
Uploads data associated with the local content.
|
||||
|
||||
*Swift*
|
||||
|
||||
func uploadWithData(data: NSData, forKey key: String) {
|
||||
|
||||
let userFilemanager = AWSUserFileManager(forKey: "KeyUsedToRegister")
|
||||
let localContent = userFilemanager.localContent(with: data, key: key)
|
||||
localContent.uploadWithPinOnCompletion(false, progressBlock: {(content: AWSLocalContent?, progress: NSProgress?) -> Void in
|
||||
// handle progress here
|
||||
}, completionHandler: {(content: AWSContent?, error: Error?) -> Void in
|
||||
if let error = error {
|
||||
// handle error here
|
||||
print("Error occured in uploading: \(error)")
|
||||
return
|
||||
}
|
||||
// handle successful upload here
|
||||
})
|
||||
}
|
||||
|
||||
*Objective-C*
|
||||
|
||||
- (void)uploadWithData:(NSData *)data forKey:(NSString *)key {
|
||||
|
||||
AWSUserFileManager *userFileManager = [AWSUserFileManager userFileManagerForKey:@"KeyUsedToRegister"];
|
||||
AWSLocalContent *localContent = [self.manager localContentWithData:data
|
||||
key:key];
|
||||
[localContent uploadWithPinOnCompletion:NO
|
||||
progressBlock:^(AWSLocalContent *content, NSProgress *progress) {
|
||||
// handle progress here
|
||||
}
|
||||
completionHandler:^(AWSContent *content, NSError *error) {
|
||||
if (error) {
|
||||
// handle error here
|
||||
NSLog(@"Error occured in uploading: %@", error);
|
||||
return;
|
||||
}
|
||||
// perform tasks after successful upload
|
||||
}];
|
||||
}
|
||||
|
||||
@param pinOnCompletion When set to `YES`, it pins the content after finishing uploading it.
|
||||
@param progressBlock The upload progress block.
|
||||
@param completionHandler The completion handler block.
|
||||
*/
|
||||
- (void)uploadWithPinOnCompletion:(BOOL)pinOnCompletion
|
||||
progressBlock:(void(^ _Nullable)(AWSLocalContent *content, NSProgress *progress))progressBlock
|
||||
completionHandler:(void(^ _Nullable)(AWSLocalContent * _Nullable content, NSError * _Nullable error))completionHandler;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* `AWSUserFileManagerConfiguration` is the configuration object for `AWSUserFileManager` class.
|
||||
*
|
||||
*/
|
||||
@interface AWSUserFileManagerConfiguration: NSObject
|
||||
|
||||
@property (nonatomic, assign, readonly) AWSServiceConfiguration *serviceConfiguration;
|
||||
@property (nonatomic, readonly) NSString *bucketName;
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSUserFileManagerConfiguration`. Use this as the configuration object for AWSUserFileManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
|
||||
let userFileManagerConfiguration = AWSUserFileManagerConfiguration(bucketName: "myBucket", serviceConfiguration: configuration)
|
||||
|
||||
AWSUserFileManager.registerUserFileManagerWithConfiguration(userFileManagerConfiguration, forKey: "USWest2BucketManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
|
||||
AWSUserFileManagerConfiguration *userFileManagerConfiguration = [[AWSUserFileManager alloc] initWithBucketName:@"myBucketName"
|
||||
serviceConfiguration:configuration];
|
||||
[AWSUserFileManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"USWest2BucketManager"];
|
||||
|
||||
@param bucketName Name of the bucket
|
||||
@param serviceConfiguration AWSServiceConfiguration object; nil for default configuration
|
||||
@return an instance of AWSUserFileManagerConfiguration
|
||||
*/
|
||||
- (instancetype)initWithBucketName:(NSString *)bucketName
|
||||
serviceConfiguration:(nullable AWSServiceConfiguration *)serviceConfiguration;
|
||||
|
||||
/**
|
||||
Returns an instance of `AWSUserFileManagerConfiguration` using the default service configuration. Use this as the configuration object for AWSUserFileManager.
|
||||
|
||||
*Swift*
|
||||
|
||||
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
|
||||
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider: credentialProvider)
|
||||
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
|
||||
|
||||
let userFileManagerConfiguration = AWSUserFileManagerConfiguration(bucketName: "myBucket")
|
||||
|
||||
AWSUserFileManager.registerUserFileManagerWithConfiguration(userFileManagerConfiguration, forKey: "USWest2BucketManager")
|
||||
|
||||
*Objective-C*
|
||||
|
||||
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
|
||||
identityPoolId:@"YourIdentityPoolId"];
|
||||
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSWest2
|
||||
credentialsProvider:credentialsProvider];
|
||||
AWSUserFileManagerConfiguration *userFileManagerConfiguration = [[AWSUserFileManager alloc] initWithBucketName:@"myBucketName"];
|
||||
[AWSUserFileManager registerUserFileManagerWithConfiguration:userFileManagerConfiguration
|
||||
forKey:@"USWest2BucketManager"];
|
||||
|
||||
|
||||
@param bucketName Name of the bucket
|
||||
@return an instance of AWSUserFileManagerConfiguration
|
||||
*/
|
||||
- (instancetype)initWithBucketName:(NSString *)bucketName;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// AWSZendeskAuthorizationManager.h
|
||||
//
|
||||
// Copyright 2016 Amazon.com, Inc. or its affiliates (Amazon). All Rights Reserved.
|
||||
//
|
||||
// Code generated by AWS Mobile Hub. Amazon gives unlimited permission to
|
||||
// copy, distribute and modify it.
|
||||
//
|
||||
|
||||
#import "AWSAuthorizationManager.h"
|
||||
|
||||
@interface AWSZendeskAuthorizationManager : AWSAuthorizationManager
|
||||
|
||||
/**
|
||||
* Singleton used to authorize user during OAuth2.0
|
||||
* @return the singleton
|
||||
*/
|
||||
+ (instancetype _Nonnull)sharedInstance;
|
||||
|
||||
/**
|
||||
* Customize the flow. This relies on the redirectURI being an Universal link.
|
||||
*
|
||||
* @param clientID The client ID that you signed up for in Zendesk
|
||||
* @param redirectURI The redirect URI you provided Zendesk
|
||||
* i.e. https://mysampleapp.amazonaws.com/zendesk/success
|
||||
* @param subdomain The subdomain that you signed up for in Zendesk
|
||||
*/
|
||||
- (void)configureWithClientID:(NSString * _Nonnull)clientID
|
||||
redirectURI:(NSString * _Nonnull)redirectURI
|
||||
subdomain:(NSString * _Nonnull)subdomain;
|
||||
|
||||
/**
|
||||
* If you are unable to setup Universal links at this moment, then for development purposes
|
||||
* you may consider use a HTTPS endpoint that you control to redirect to a custom app scheme url.
|
||||
*
|
||||
* Example:
|
||||
* Endpoint HTML content at https://awsmobilehub.s3-us-west-2.amazonaws.com/zendesk
|
||||
* <html>
|
||||
* <script>window.location.href = "com.amazon.mysampleapp://zendesk/oauth2" + window.location.href;</script>
|
||||
* </html>
|
||||
*
|
||||
* customSchemeRedirectURI = @"com.amazon.mysampleapp://zendesk/oauth2";
|
||||
* httpsEndpoint = @"https://awsmobilehub.s3-us-west-2.amazonaws.com/zendesk";
|
||||
*
|
||||
* @param clientID The client ID that you signed up for in Zendesk
|
||||
* @param customSchemeRedirectURI The redirectURI that has the custom app scheme
|
||||
* @param httpsEndpoint The HTTPS endpoint that needs to be registered with Zendesk.
|
||||
* This endpoint must redirect the page to the customSchemeRedirectURI
|
||||
* provided here.
|
||||
* @param subdomain The subdomain that you signed up for in Zendesk
|
||||
*/
|
||||
- (void)configureWithClientID:(NSString * _Nonnull)clientID
|
||||
setCustomSchemeRedirectURI:(NSString * _Nonnull)customSchemeRedirectURI
|
||||
httpsEndpoint:(NSString * _Nonnull)httpsEndpoint
|
||||
subdomain:(NSString * _Nonnull)subdomain;
|
||||
|
||||
/**
|
||||
*
|
||||
* Available scopes:
|
||||
* tickets
|
||||
* users
|
||||
* auditlogs (read only)
|
||||
* organizations
|
||||
* hc
|
||||
* apps
|
||||
* triggers
|
||||
* automations
|
||||
* targets
|
||||
*
|
||||
* @param scope Specify the amount of access the user would like.
|
||||
* i.e. @"read"
|
||||
* @"read tickets:write"
|
||||
* @"tickets:read tickets:write"
|
||||
*/
|
||||
- (void)setScope:(NSString * _Nonnull)scope;
|
||||
|
||||
/**
|
||||
* @return The token type. Available after user authorizes app.
|
||||
* i.e. Bearer
|
||||
*/
|
||||
- (NSString * _Nullable)getTokenType;
|
||||
|
||||
/**
|
||||
* @return The subdomain that you signed up for in Zendesk.
|
||||
* i.e. aws
|
||||
*/
|
||||
- (NSString * _Nullable)getSubdomain;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,6 @@
|
||||
framework module AWSMobileHubHelper {
|
||||
umbrella header "AWSMobileHubHelper.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -2,45 +2,46 @@
|
||||
// AppDelegate.swift
|
||||
// My Mind
|
||||
//
|
||||
// Created by Alexander Davis on 02/04/2017.
|
||||
// Created by Alexander Davis on 30/03/2017.
|
||||
// Copyright © 2017 Alexander Davis. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import AWSCore
|
||||
import AWSCognitoIdentityProvider
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||
// Override point for customization after application launch.
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
func applicationWillResignActive(_ application: UIApplication) {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
|
||||
func applicationDidEnterBackground(_ application: UIApplication) {
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
|
||||
func applicationWillTerminate(_ application: UIApplication) {
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||
return AWSMobileClient.sharedInstance.didFinishLaunching(application, withOptions: launchOptions)
|
||||
}
|
||||
|
||||
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
|
||||
return AWSMobileClient.sharedInstance.withApplication(application, withURL: url, withSourceApplication: sourceApplication, withAnnotation: annotation)
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
AWSMobileClient.sharedInstance.applicationDidBecomeActive(application)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="GW0-69-bD5">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
@@ -10,30 +10,29 @@
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<scene sceneID="M8s-fF-QEx">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<viewController id="GW0-69-bD5" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||
<viewControllerLayoutGuide type="top" id="lMs-dA-kqk"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="WDo-zS-HHP"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<view key="view" contentMode="scaleToFill" id="ppq-VJ-VDs">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text=" Copyright © 2017 Alexander Davis." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="Dhw-jW-Dlx">
|
||||
<rect key="frame" x="19" y="615" width="336" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright © 2017 Alexander Davis." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="zGC-go-npl">
|
||||
<rect key="frame" x="20" y="626" width="336" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="iTunesArtwork" translatesAutoresizingMaskIntoConstraints="NO" id="DNK-4q-9BJ">
|
||||
<rect key="frame" x="66" y="31" width="242" height="242"/>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="iTunesArtwork" translatesAutoresizingMaskIntoConstraints="NO" id="nap-1D-EZj">
|
||||
<rect key="frame" x="67" y="42" width="242" height="242"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="My Mind" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="G9K-Iq-XQ4">
|
||||
<rect key="frame" x="19" y="362" width="335" height="43"/>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="My Mind" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="Uex-kl-GPa">
|
||||
<rect key="frame" x="20" y="373" width="335" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
@@ -41,12 +40,19 @@
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="zGC-go-npl" secondAttribute="bottom" constant="20" id="58u-0f-xbE"/>
|
||||
<constraint firstItem="zGC-go-npl" firstAttribute="leading" secondItem="ppq-VJ-VDs" secondAttribute="leading" constant="20" symbolic="YES" id="Adf-Vm-odA"/>
|
||||
<constraint firstAttribute="centerX" secondItem="zGC-go-npl" secondAttribute="centerX" id="eca-p0-zJE"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<size key="freeformSize" width="375" height="667"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ioh-gR-H2E" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
<point key="canvasLocation" x="52" y="374.66266866566718"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
|
||||
1116
My Mind/My Mind/Base.lproj/Main.storyboard
Normal file
1116
My Mind/My Mind/Base.lproj/Main.storyboard
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,14 +2,14 @@
|
||||
// ForumView.swift
|
||||
// My Mind
|
||||
//
|
||||
// Created by Alexander Davis on 02/04/2017.
|
||||
// Created by Alexander Davis on 31/03/2017.
|
||||
// Copyright © 2017 Alexander Davis. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
class Forum: UIViewController {
|
||||
class ForumViewController: UIViewController {
|
||||
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
return .lightContent
|
||||
|
||||
@@ -2,6 +2,32 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AWS</key>
|
||||
<dict>
|
||||
<key>CredentialsProvider</key>
|
||||
<dict>
|
||||
<key>CognitoIdentity</key>
|
||||
<dict>
|
||||
<key>Default</key>
|
||||
<dict>
|
||||
<key>PoolId</key>
|
||||
<string>eu-west-2:53bd16f0-753d-4d1c-8181-3d01aa7811b5</string>
|
||||
<key>Region</key>
|
||||
<string>eu-west-2</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>IdentityManager</key>
|
||||
<dict>
|
||||
<key>Default</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<key>MobileHub</key>
|
||||
<dict>
|
||||
<key>ProjectClientId</key>
|
||||
<string>MobileHub 9af77051-19c5-4bb5-a348-cfc67821053e aws-my-sample-app-ios-swift-v0.12</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
@@ -18,28 +44,55 @@
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>Cognito</key>
|
||||
<dict>
|
||||
<key>Default</key>
|
||||
<dict>
|
||||
<key>Region</key>
|
||||
<string>eu-west-2</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>fetch</string>
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>OnBoard</string>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UIStatusBarStyle</key>
|
||||
<string>UIStatusBarStyleLightContent</string>
|
||||
<key>UIStatusBarTintParameters</key>
|
||||
<dict>
|
||||
<key>UINavigationBar</key>
|
||||
<dict>
|
||||
<key>Style</key>
|
||||
<string>UIBarStyleDefault</string>
|
||||
<key>Translucent</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
</array>
|
||||
<key>UserFileManager</key>
|
||||
<dict>
|
||||
<key>Default</key>
|
||||
<dict>
|
||||
<key>Region</key>
|
||||
<string>eu-west-2</string>
|
||||
<key>S3Bucket</key>
|
||||
<string>mymind-userfiles-mobilehub-700183796</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -1,570 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="beY-Cl-EyY">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Login-->
|
||||
<scene sceneID="8iP-9L-5gv">
|
||||
<objects>
|
||||
<viewController id="2iA-qt-0fb" userLabel="Login" customClass="Login" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Ast-Oc-PDy"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="8a7-pA-HJp"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="XwQ-Ks-qHp">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="12345678" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="0Hz-oA-g4D" userLabel="Usernametbx">
|
||||
<rect key="frame" x="129" y="84" width="230" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="wYZ-1o-OD3" userLabel="Passwordtbx">
|
||||
<rect key="frame" x="109" y="122" width="250" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" secureTextEntry="YES"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Student ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bVQ-Aq-t4M" userLabel="Usernamelbl">
|
||||
<rect key="frame" x="16" y="87" width="85" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="S" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nIv-tS-Nl2" userLabel="Usernamelbl">
|
||||
<rect key="frame" x="114" y="87" width="14" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2n3-w8-APd" userLabel="Passwordlbl">
|
||||
<rect key="frame" x="16" y="128" width="85" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="My Mind Login" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Zc-jF-Kob" userLabel="BCU Mind Loginlbl">
|
||||
<rect key="frame" x="16" y="20" width="343" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="43"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yWm-7M-Izf" userLabel="SignUpbtn">
|
||||
<rect key="frame" x="63" y="198" width="248" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Don't Have An Account? Sign Up"/>
|
||||
<connections>
|
||||
<segue destination="jV2-Ux-fqt" kind="show" id="1QD-Dp-0Db"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bgP-wC-RPz" userLabel="Forgotbtn">
|
||||
<rect key="frame" x="114" y="160" width="147" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Forgotten Password?"/>
|
||||
<connections>
|
||||
<segue destination="PRS-B1-CNP" kind="show" id="2up-ES-liz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="E22-Cw-qpd" userLabel="Loginbtn">
|
||||
<rect key="frame" x="313" y="160" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Login"/>
|
||||
<connections>
|
||||
<segue destination="L57-BB-K0l" kind="show" id="iJ1-Jk-FLf"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="856-8m-zjK" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-674.39999999999998" y="175.86206896551727"/>
|
||||
</scene>
|
||||
<!--Login-->
|
||||
<scene sceneID="2PF-O2-Su3">
|
||||
<objects>
|
||||
<viewController id="PRS-B1-CNP" userLabel="Login" customClass="Login" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="cpl-2b-Ypp"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="Yqn-Ph-ckK"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="qPs-TV-hfg">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="12345678" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="gQy-tV-N6T" userLabel="Usernametbx">
|
||||
<rect key="frame" x="129" y="84" width="230" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Student ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lBs-tD-HUm" userLabel="Usernamelbl">
|
||||
<rect key="frame" x="16" y="87" width="85" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="S" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rgs-0d-atd" userLabel="Usernamelbl">
|
||||
<rect key="frame" x="114" y="87" width="14" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Forgotten Password" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ffU-lW-fPK" userLabel="BCU Mind Loginlbl">
|
||||
<rect key="frame" x="16" y="20" width="343" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7by-4K-qmx" userLabel="Loginbtn">
|
||||
<rect key="frame" x="196" y="187" width="163" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Request New Password"/>
|
||||
</button>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="FirstName.LastName@mail.bcu.ac.uk" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="ZkP-r1-qri" userLabel="Usernametbx">
|
||||
<rect key="frame" x="16" y="149" width="343" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Email Address" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Oa-n9-Ze7" userLabel="Passwordlbl">
|
||||
<rect key="frame" x="16" y="120" width="112" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mst-Eg-Bnd" userLabel="SignUpbtn">
|
||||
<rect key="frame" x="63" y="246" width="248" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Don't Have An Account? Sign Up"/>
|
||||
<connections>
|
||||
<segue destination="jV2-Ux-fqt" kind="show" id="bPL-Ez-JlP"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oWm-OO-j0e" userLabel="Loginbtn">
|
||||
<rect key="frame" x="164" y="215" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Login"/>
|
||||
<connections>
|
||||
<segue destination="2iA-qt-0fb" kind="show" id="o6z-8W-w41"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="MLq-Ln-JBY" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="685.60000000000002" y="175.86206896551727"/>
|
||||
</scene>
|
||||
<!--Main-->
|
||||
<scene sceneID="s06-UL-cVS">
|
||||
<objects>
|
||||
<viewControllerPlaceholder storyboardName="Main" id="L57-BB-K0l" sceneMemberID="viewController"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="055-cq-yg3" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-1056" y="56"/>
|
||||
</scene>
|
||||
<!--SignUp-->
|
||||
<scene sceneID="KSh-sT-DAc">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="SignUp" id="jV2-Ux-fqt" userLabel="SignUp" customClass="SignUp" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="IaH-Gx-K8j"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="Epi-G7-1c0"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="yEN-SJ-Ufy">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="My Mind Sign Up" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YDw-do-faO" userLabel="BCU Mind Loginlbl">
|
||||
<rect key="frame" x="16" y="20" width="343" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="43"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="12345678" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="VYP-Gu-FBr" userLabel="Usernametbx">
|
||||
<rect key="frame" x="129" y="288" width="230" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="Fei-nS-woH" userLabel="Passwordtbx">
|
||||
<rect key="frame" x="109" y="326" width="250" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" secureTextEntry="YES"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Student ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mhl-Ou-4gw" userLabel="Usernamelbl">
|
||||
<rect key="frame" x="16" y="291" width="85" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="S" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kkh-4q-vkb" userLabel="Usernamelbl">
|
||||
<rect key="frame" x="114" y="291" width="14" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z9h-f6-Rw4" userLabel="Passwordlbl">
|
||||
<rect key="frame" x="16" y="332" width="85" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="FirstName.LastName@mail.bcu.ac.uk" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="djN-4i-gbu" userLabel="Usernametbx">
|
||||
<rect key="frame" x="16" y="116" width="343" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Email Address" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bog-Vb-cTB" userLabel="Passwordlbl">
|
||||
<rect key="frame" x="16" y="87" width="112" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="First Name" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="zxZ-Cl-QQl" userLabel="Usernametbx">
|
||||
<rect key="frame" x="16" y="183" width="343" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="First Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c6H-ki-DN8" userLabel="Passwordlbl">
|
||||
<rect key="frame" x="16" y="154" width="85" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Last Name" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="iIY-eY-8IR" userLabel="Usernametbx">
|
||||
<rect key="frame" x="16" y="250" width="343" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Last Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mAL-p2-C77" userLabel="Passwordlbl">
|
||||
<rect key="frame" x="16" y="221" width="85" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Xeq-cR-Ga2" userLabel="SignUpbtn">
|
||||
<rect key="frame" x="63" y="402" width="248" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Already Have An Account? Login"/>
|
||||
<connections>
|
||||
<segue destination="2iA-qt-0fb" kind="show" id="oft-Yh-1QU"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pq7-cm-RJI" userLabel="Forgotbtn">
|
||||
<rect key="frame" x="114" y="364" width="147" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Forgotten Password?"/>
|
||||
<connections>
|
||||
<segue destination="PRS-B1-CNP" kind="show" id="FWH-F0-MJP"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RKf-Oo-Td2" userLabel="Loginbtn">
|
||||
<rect key="frame" x="294" y="364" width="65" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Sign Up"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="5cb-RM-7Zt" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="16.800000000000001" y="175.86206896551727"/>
|
||||
</scene>
|
||||
<!--Sign Up Online-->
|
||||
<scene sceneID="7gr-iw-Mku">
|
||||
<objects>
|
||||
<viewController id="SYM-OK-Zrb" customClass="SignUpOnline" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="XM8-Yr-U1K"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="ndt-fR-bCO"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="NQO-bh-zB3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<webView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="z4j-V3-SUb">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="559"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</webView>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NEJ-mQ-Geh">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="Sign Up" id="KOv-Zl-dpw"/>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EAd-B1-lXw">
|
||||
<rect key="frame" x="0.0" y="623" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<items>
|
||||
<barButtonItem title="Login" id="bMA-Mf-lu8"/>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="WdS-4B-Jxi"/>
|
||||
<barButtonItem systemItem="stop" id="LbX-iq-1kG">
|
||||
<connections>
|
||||
<action selector="stopLoading" destination="z4j-V3-SUb" id="wkK-NN-grF"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem systemItem="refresh" id="iVR-8K-UoU">
|
||||
<connections>
|
||||
<action selector="reload" destination="z4j-V3-SUb" id="CjU-PM-2cM"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="JhE-zl-y2s"/>
|
||||
<barButtonItem title="Forgot Password?" id="QM4-xR-M7h"/>
|
||||
</items>
|
||||
</toolbar>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="webView" destination="z4j-V3-SUb" id="fer-iC-iB6"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="MeW-zq-Xax" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="28" y="1190"/>
|
||||
</scene>
|
||||
<!--Sign Up Online-->
|
||||
<scene sceneID="SAJ-T5-Xcy">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ForumSignUp" id="cY8-99-pBR" customClass="SignUpOnline" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="OeX-uQ-zWJ"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="RvK-E3-MZp"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="UBL-rA-iNo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<webView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SUK-xo-mhV">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="559"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</webView>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60a-bA-4AT">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="Sign Up" id="fu5-Wp-GIk"/>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YSA-2K-tve">
|
||||
<rect key="frame" x="0.0" y="623" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<items>
|
||||
<barButtonItem title="Login" id="k3h-fE-fPZ">
|
||||
<connections>
|
||||
<segue destination="beY-Cl-EyY" kind="show" id="p5v-EQ-TvB"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="f4L-Fu-vW1"/>
|
||||
<barButtonItem systemItem="stop" id="wkl-lF-AnY">
|
||||
<connections>
|
||||
<action selector="stopLoading" destination="SUK-xo-mhV" id="JBB-Wy-pfT"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem systemItem="refresh" id="2jj-Jb-TWp">
|
||||
<connections>
|
||||
<action selector="reload" destination="SUK-xo-mhV" id="tch-IP-3eu"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="ucW-IX-zUX"/>
|
||||
<barButtonItem title="Forgot Password?" id="fLP-uU-CW5">
|
||||
<connections>
|
||||
<segue destination="e7b-sh-Rg8" kind="show" id="wSm-3E-k9h"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</items>
|
||||
</toolbar>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="webView" destination="SUK-xo-mhV" id="n6c-o3-qXb"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="fEY-cP-BZS" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="28" y="1190"/>
|
||||
</scene>
|
||||
<!--Login Online-->
|
||||
<scene sceneID="pMl-9T-jhy">
|
||||
<objects>
|
||||
<viewController id="beY-Cl-EyY" customClass="LoginOnline" customModule="My_Mind" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="NWM-yY-usR"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="b6n-7k-qBg"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="iXN-FZ-Bk9">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<webView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dAM-nY-KMW">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="559"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</webView>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="evO-0W-sxR">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="Login" id="yjq-oJ-9Uz"/>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dt4-yw-BuV">
|
||||
<rect key="frame" x="0.0" y="623" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<items>
|
||||
<barButtonItem title="Sign Up" id="4ur-iT-btc">
|
||||
<connections>
|
||||
<segue destination="cY8-99-pBR" kind="show" id="XK9-3X-nWx"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="QbJ-q7-WTE"/>
|
||||
<barButtonItem systemItem="stop" id="gOg-Zv-dsf">
|
||||
<connections>
|
||||
<action selector="stopLoading" destination="dAM-nY-KMW" id="ksS-mU-F9s"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem systemItem="refresh" id="Zkn-nL-Fd3">
|
||||
<connections>
|
||||
<action selector="reload" destination="dAM-nY-KMW" id="NiX-Ki-Hs2"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="zOI-ac-hZS"/>
|
||||
<barButtonItem title="Forgot Password?" id="jA2-oZ-Mh4">
|
||||
<connections>
|
||||
<segue destination="e7b-sh-Rg8" kind="show" id="xd8-5q-nXE"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</items>
|
||||
</toolbar>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="webView" destination="dAM-nY-KMW" id="wTU-Qo-7Bg"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="64m-TZ-77J" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-663" y="1189"/>
|
||||
</scene>
|
||||
<!--Password Online-->
|
||||
<scene sceneID="GA2-Ah-yTR">
|
||||
<objects>
|
||||
<viewController id="e7b-sh-Rg8" customClass="PasswordOnline" customModule="My_Mind" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Ywl-KD-cOe"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="DhX-Kg-PDN"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Z1f-R7-Uph">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<webView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="38s-3E-N2G">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="559"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</webView>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PZ6-GM-dh6">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="Forgotten Password" id="PWr-lw-Waz"/>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VUP-tu-Qxm">
|
||||
<rect key="frame" x="0.0" y="623" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<items>
|
||||
<barButtonItem title="Login" id="WRi-R1-I9d">
|
||||
<connections>
|
||||
<segue destination="beY-Cl-EyY" kind="show" id="OHR-2q-3Ye"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="sIC-3q-QFZ"/>
|
||||
<barButtonItem systemItem="stop" id="OmJ-Jq-PB5">
|
||||
<connections>
|
||||
<action selector="stopLoading" destination="38s-3E-N2G" id="KVZ-J3-iq7"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem systemItem="refresh" id="vyg-o7-53p">
|
||||
<connections>
|
||||
<action selector="reload" destination="38s-3E-N2G" id="tpk-Vc-1Bn"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="gBK-c0-CR7"/>
|
||||
<barButtonItem title="Sign Up" id="jUa-Mk-q6m">
|
||||
<connections>
|
||||
<segue destination="cY8-99-pBR" kind="show" id="7ZP-XU-pfd"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</items>
|
||||
</toolbar>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="webView" destination="38s-3E-N2G" id="n3c-cT-xhP"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="3cY-F9-zx9" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="697" y="1188"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="o6z-8W-w41"/>
|
||||
<segue reference="2up-ES-liz"/>
|
||||
<segue reference="1QD-Dp-0Db"/>
|
||||
<segue reference="7ZP-XU-pfd"/>
|
||||
<segue reference="xd8-5q-nXE"/>
|
||||
<segue reference="OHR-2q-3Ye"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
</document>
|
||||
@@ -1,18 +0,0 @@
|
||||
//
|
||||
// LoginViews.swift
|
||||
// My Mind
|
||||
//
|
||||
// Created by Alexander Davis on 02/04/2017.
|
||||
// Copyright © 2017 Alexander Davis. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
class Login : UIViewController {
|
||||
|
||||
override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
return .lightContent
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,569 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Fc5-7Q-vbs">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Appointments-->
|
||||
<scene sceneID="fIX-OU-UW2">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="Appointments" id="UDv-L2-gx7" userLabel="Appointments" customClass="Appointments" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="DQq-ua-Xan"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="enm-z8-a2i"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="lA0-kJ-KHI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="thv-Xi-3pn">
|
||||
<rect key="frame" x="0.0" y="72" width="375" height="546"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</tableView>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QuE-Wu-wyQ">
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="My Appointments" id="hdF-rs-gc0">
|
||||
<barButtonItem key="rightBarButtonItem" systemItem="add" id="WtL-0A-zhE">
|
||||
<connections>
|
||||
<segue destination="06M-lC-QTT" kind="show" id="aeh-1h-TrX"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</navigationItem>
|
||||
</items>
|
||||
</navigationBar>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Appointments" image="Appointments" id="qNC-t7-uFO"/>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="glG-Zn-YZi" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="494" y="477"/>
|
||||
</scene>
|
||||
<!--Forum-->
|
||||
<scene sceneID="7pr-nq-bJ9">
|
||||
<objects>
|
||||
<viewController id="q4n-cS-mG4" userLabel="Forum" customClass="Forum" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="hN1-jE-QOb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="aMN-aS-Hf0"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="BDJ-ko-97h">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="75T-3b-ySL">
|
||||
<rect key="frame" x="0.0" y="574" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<items>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="TJa-Kx-dr0"/>
|
||||
<barButtonItem systemItem="stop" id="TUE-9L-Dpb">
|
||||
<connections>
|
||||
<action selector="stopLoading" destination="mZw-LC-hoB" id="hta-R9-yjY"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem systemItem="refresh" id="Za1-2I-sKk">
|
||||
<connections>
|
||||
<action selector="reload" destination="mZw-LC-hoB" id="c96-oS-Qh1"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem style="plain" systemItem="flexibleSpace" id="Vzc-0P-pAM"/>
|
||||
</items>
|
||||
</toolbar>
|
||||
<webView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="mZw-LC-hoB">
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="546"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</webView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Forum" image="EngageSmall" id="maS-yR-nf9"/>
|
||||
<connections>
|
||||
<outlet property="webView" destination="mZw-LC-hoB" id="g2H-VA-vX3"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="KM5-0O-had" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="118" y="1128"/>
|
||||
</scene>
|
||||
<!--Settings-->
|
||||
<scene sceneID="oiY-WT-88w">
|
||||
<objects>
|
||||
<viewController id="AxW-J7-pUR" userLabel="Settings" customClass="Settings" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="G84-vR-WBY"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="kcb-Ew-6OS"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ls5-gk-wkl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Account" image="UserProfileDataSmall" id="YNQ-wx-Yht"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="kER-Zr-OC2" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="118" y="1802"/>
|
||||
</scene>
|
||||
<!--Contacts-->
|
||||
<scene sceneID="kEV-63-m9b">
|
||||
<objects>
|
||||
<viewController id="ynj-IF-bGb" userLabel="Contacts" customClass="Contacts" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="wnk-fQ-5Me"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="SYk-au-3m7"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="taB-B3-AUp">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yO9-aa-ag0">
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="Emergency Contacts" id="Zt9-JQ-ugD"/>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="e7n-Gl-DD2">
|
||||
<rect key="frame" x="0.0" y="72" width="375" height="546"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Contacts" image="Forum" id="eKC-xh-Smo"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="CC0-tW-x1d" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="118" y="2487"/>
|
||||
</scene>
|
||||
<!--Referrals-->
|
||||
<scene sceneID="OM3-HT-oGs">
|
||||
<objects>
|
||||
<viewController id="OhC-oL-miH" userLabel="Referrals" customClass="Referrals" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="gJa-sR-CrA"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="KbM-mb-AEB"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="aE9-z2-8UG">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Make A Referral" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="q2d-Ns-CqR" userLabel="BCU Mind Loginlbl">
|
||||
<rect key="frame" x="16" y="20" width="343" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="43"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="14" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HkN-dL-e9a">
|
||||
<rect key="frame" x="16" y="87" width="343" height="453"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<mutableString key="text">Please complete this form and read and sign the Record Keeping and Confidentiality statements before you meet with a Counsellor, Mental Health Adviser or Wellbeing Adviser.
|
||||
This form gives you the opportunity to indicate what has brought you to the University Wellbeing Services and how you hope to benefit from the sessions. What you write will inform us of how we can help you so please provide us with as much information as you can. However, if there are any questions that you prefer not to answer, please leave them blank.</mutableString>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="90f-CS-GIc">
|
||||
<rect key="frame" x="156" y="548" width="63" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Continue"/>
|
||||
<connections>
|
||||
<segue destination="sRN-kf-T2E" kind="show" id="ceq-RI-9b5"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<tabBarItem key="tabBarItem" title="Referrals" image="Referrals" id="bgM-3g-hgq"/>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="3rT-Rz-e8W" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="117.59999999999999" y="-188.45577211394306"/>
|
||||
</scene>
|
||||
<!--Referral-->
|
||||
<scene sceneID="EeD-RJ-THS">
|
||||
<objects>
|
||||
<tableViewController id="Ebn-Vh-Bqd" customClass="ReferralForm" customModule="My_Mind" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="VTm-qX-ibL">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="mKG-61-TP2">
|
||||
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mKG-61-TP2" id="ei3-6j-Hpr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="Ebn-Vh-Bqd" id="Fq6-WO-AHv"/>
|
||||
<outlet property="delegate" destination="Ebn-Vh-Bqd" id="FTF-L9-usa"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<navigationItem key="navigationItem" title="Referral" id="3AZ-13-7cI"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="gBK-hK-uVU" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1689" y="-849"/>
|
||||
</scene>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="7AN-gq-ub2">
|
||||
<objects>
|
||||
<navigationController id="sRN-kf-T2E" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="aro-FH-50W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="Ebn-Vh-Bqd" kind="relationship" relationship="rootViewController" id="Yi9-Kr-lO7"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Xai-Ca-Psy" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="870" y="-850"/>
|
||||
</scene>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="fCA-Ek-wcs">
|
||||
<objects>
|
||||
<viewController modalTransitionStyle="crossDissolve" modalPresentationStyle="currentContext" id="2gd-VC-7mN" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Wa5-33-ypN"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="wgT-KF-69g"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="vfs-td-eMg">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aKm-CB-XpA">
|
||||
<rect key="frame" x="156" y="493" width="63" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Continue"/>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Please give a summary of what you would like to talk about." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="alf-j4-Tec">
|
||||
<rect key="frame" x="25" y="8" width="324" height="47"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Are you currently receiving support from a Counsellor, Mental Health Adviser or GP?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WcG-Oi-wTd">
|
||||
<rect key="frame" x="25" y="285" width="324" height="47"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Have you received support from a Counsellor, Mental Health Adviser or GP in the past?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xc4-Yv-5nr">
|
||||
<rect key="frame" x="25" y="376" width="324" height="72"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Have you met with a health professional to discuss these issues?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HZt-Kf-DBO">
|
||||
<rect key="frame" x="25" y="194" width="324" height="47"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="How long have you been concerned about this problem?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l8i-Ll-u9e">
|
||||
<rect key="frame" x="25" y="101" width="324" height="47"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Please give a summary of what you would like to talk about." textAlignment="natural" adjustsFontSizeToFit="NO" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="PzH-Br-GOM">
|
||||
<rect key="frame" x="25" y="63" width="324" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences" autocorrectionType="yes" spellCheckingType="yes"/>
|
||||
</textField>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="How long have you been concerned about this problem?" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="WHC-sw-EaC">
|
||||
<rect key="frame" x="25" y="156" width="324" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<nil key="textColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences" autocorrectionType="yes" spellCheckingType="yes"/>
|
||||
</textField>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" translatesAutoresizingMaskIntoConstraints="NO" id="okT-3v-kvX">
|
||||
<rect key="frame" x="127" y="249" width="121" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Yes"/>
|
||||
<segment title="No"/>
|
||||
</segments>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</segmentedControl>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" translatesAutoresizingMaskIntoConstraints="NO" id="1kq-fY-YFJ">
|
||||
<rect key="frame" x="127" y="340" width="121" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Yes"/>
|
||||
<segment title="No"/>
|
||||
</segments>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</segmentedControl>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" translatesAutoresizingMaskIntoConstraints="NO" id="hKD-O7-Q36">
|
||||
<rect key="frame" x="127" y="456" width="121" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Yes"/>
|
||||
<segment title="No"/>
|
||||
</segments>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="n8Y-y4-Rqc" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2489" y="-850"/>
|
||||
</scene>
|
||||
<!--ReferralConfirmation-->
|
||||
<scene sceneID="Gxr-if-A1T">
|
||||
<objects>
|
||||
<viewController id="nCu-SF-2sP" userLabel="ReferralConfirmation" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="8Bl-4D-TzP"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="ScJ-ck-xFz"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="N9V-RD-t9p">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="6zt-I6-sf6" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1689" y="-188"/>
|
||||
</scene>
|
||||
<!--MakeAppointmentRequest-->
|
||||
<scene sceneID="dPe-0Q-DQH">
|
||||
<objects>
|
||||
<viewController id="06M-lC-QTT" userLabel="MakeAppointmentRequest" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Tak-KV-DJk"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="dlL-56-AJK"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Npm-2H-pLG">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<navigationBar contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hG0-2Q-mdT">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<items>
|
||||
<navigationItem title="Request Appointment" id="S7W-Av-dWo">
|
||||
<barButtonItem key="leftBarButtonItem" image="Back" id="EXh-Fw-qXR">
|
||||
<connections>
|
||||
<segue destination="Fc5-7Q-vbs" kind="show" id="03g-Kj-u4y"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<connections>
|
||||
<outlet property="backBarButtonItem" destination="EXh-Fw-qXR" id="IHR-B5-fjV"/>
|
||||
</connections>
|
||||
</navigationItem>
|
||||
</items>
|
||||
</navigationBar>
|
||||
<containerView opaque="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="r1L-44-tTb">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="554"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<connections>
|
||||
<segue destination="c0D-Qa-Acw" kind="embed" id="mkY-Lu-67j"/>
|
||||
</connections>
|
||||
</containerView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<gestureRecognizers/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="RPJ-5d-tre" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2489" y="-188"/>
|
||||
</scene>
|
||||
<!--Table View Controller-->
|
||||
<scene sceneID="m5a-xH-fzt">
|
||||
<objects>
|
||||
<tableViewController id="c0D-Qa-Acw" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="ntq-eL-vgL">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="554"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<sections>
|
||||
<tableViewSection id="r5Y-rr-lPg">
|
||||
<cells>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Tqf-vd-K2X">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Tqf-vd-K2X" id="wdG-Az-SaN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Date" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nqr-4I-kCl">
|
||||
<rect key="frame" x="8" y="12" width="42" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ccQ-KV-OtP">
|
||||
<rect key="frame" x="0.0" y="44" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ccQ-KV-OtP" id="chI-5R-wYu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Time" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="122-Mt-t9t">
|
||||
<rect key="frame" x="8" y="12" width="42" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="C9p-8F-gfi">
|
||||
<rect key="frame" x="0.0" y="88" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="C9p-8F-gfi" id="nNh-Ix-VtI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Location" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cyi-px-PXO">
|
||||
<rect key="frame" x="8" y="12" width="72" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
</sections>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="c0D-Qa-Acw" id="gnK-ib-ctv"/>
|
||||
<outlet property="delegate" destination="c0D-Qa-Acw" id="0lM-HY-bwq"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="nyG-nh-Ueg" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="3238" y="-190"/>
|
||||
</scene>
|
||||
<!--ReceiveAppointmentRequest-->
|
||||
<scene sceneID="lpH-mc-i3s">
|
||||
<objects>
|
||||
<viewController id="gaK-sb-7Of" userLabel="ReceiveAppointmentRequest" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="DgO-YW-ch9"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="qfH-IC-vXv"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="vy5-oM-sJm">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="3tI-HD-9Se" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2489" y="475"/>
|
||||
</scene>
|
||||
<!--UpcomingAppointment-->
|
||||
<scene sceneID="aSu-85-8wC">
|
||||
<objects>
|
||||
<viewController id="gda-Tc-2Ul" userLabel="UpcomingAppointment" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="FJe-Nd-zse"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="in2-jE-d9E"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="cgY-BB-sog">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="9Wg-Vm-Csm" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2489" y="1128"/>
|
||||
</scene>
|
||||
<!--PastAppointment-->
|
||||
<scene sceneID="lir-9E-Mln">
|
||||
<objects>
|
||||
<viewController id="yd3-sZ-Xnc" userLabel="PastAppointment" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="HX4-UM-rrK"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="PMx-q6-ZAK"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="5qw-7Q-ucI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.25098040700000002" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Cl8-BN-cZK" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2489" y="1800"/>
|
||||
</scene>
|
||||
<!--Tab Bar Controller-->
|
||||
<scene sceneID="D2p-us-fds">
|
||||
<objects>
|
||||
<tabBarController storyboardIdentifier="MainTabs" modalTransitionStyle="crossDissolve" id="Fc5-7Q-vbs" sceneMemberID="viewController">
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<tabBar key="tabBar" contentMode="scaleToFill" id="PIb-bC-FSa">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="49"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</tabBar>
|
||||
<connections>
|
||||
<segue destination="OhC-oL-miH" kind="relationship" relationship="viewControllers" id="uGC-zA-oHi"/>
|
||||
<segue destination="UDv-L2-gx7" kind="relationship" relationship="viewControllers" id="TyX-8k-Wsb"/>
|
||||
<segue destination="q4n-cS-mG4" kind="relationship" relationship="viewControllers" id="rQU-yP-vv7"/>
|
||||
<segue destination="AxW-J7-pUR" kind="relationship" relationship="viewControllers" id="8gr-99-efW"/>
|
||||
<segue destination="ynj-IF-bGb" kind="relationship" relationship="viewControllers" id="rsv-fp-aRa"/>
|
||||
</connections>
|
||||
</tabBarController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="fi1-CB-A0M" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-649" y="221"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="Appointments" width="30" height="30"/>
|
||||
<image name="Back" width="30" height="30"/>
|
||||
<image name="EngageSmall" width="30" height="30"/>
|
||||
<image name="Forum" width="30" height="30"/>
|
||||
<image name="Referrals" width="30" height="30"/>
|
||||
<image name="UserProfileDataSmall" width="30" height="30"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -2,7 +2,7 @@
|
||||
// OnBoardingController.swift
|
||||
// My Mind
|
||||
//
|
||||
// Created by Alexander Davis on 02/04/2017.
|
||||
// Created by Alexander Davis on 30/03/2017.
|
||||
// Copyright © 2017 Alexander Davis. All rights reserved.
|
||||
//
|
||||
|
||||
@@ -45,7 +45,7 @@ extension OnBoardingController : UIPageViewControllerDataSource {
|
||||
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
|
||||
if viewController.isKind(of: PageTwo.self) {
|
||||
// 2 -> 1
|
||||
return getPageOne()
|
||||
return getPageTwo()
|
||||
} else if viewController.isKind(of: PageTwo.self) {
|
||||
// 1 -> 0
|
||||
return getPageOne()
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user