diff --git a/AppledocSettings.plist b/AppledocSettings.plist
deleted file mode 100644
index 59116df9..00000000
--- a/AppledocSettings.plist
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- --company-id
- com.escoz
- --logformat
- 1
- --project-name
- QuickDialog
- --project-company
- Escoz
- --print-settings
-
- --output
-
- ./docs
-
- --keep-intermediate-files
-
- --create-html
-
- --keep-undocumented-members
-
- --keep-undocumented-objects
-
- --create-docset
-
- --ignore
-
- ./sample
- ./extras
-
- --index-desc
- ./README.markdown
- --verbose
- 4
-
-
diff --git a/Assets/Core/qd_keyboardNext@2x.png b/Assets/Core/qd_keyboardNext@2x.png
new file mode 100644
index 00000000..61bbf93d
Binary files /dev/null and b/Assets/Core/qd_keyboardNext@2x.png differ
diff --git a/Assets/Core/qd_keyboardPrevious@2x.png b/Assets/Core/qd_keyboardPrevious@2x.png
new file mode 100644
index 00000000..8c942016
Binary files /dev/null and b/Assets/Core/qd_keyboardPrevious@2x.png differ
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..1d0d1f1c
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+# QuickDialog CHANGELOG
+
+## 0.1.0
+
+Initial release.
diff --git a/Classes/Core/NSMutableArray+MoveObject.h b/Classes/Core/NSMutableArray+MoveObject.h
new file mode 100644
index 00000000..c84937a5
--- /dev/null
+++ b/Classes/Core/NSMutableArray+MoveObject.h
@@ -0,0 +1,22 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+//
+
+#import
+
+@interface NSMutableArray (MoveObject)
+
+- (void)qd_moveObjectFromIndex:(NSUInteger)from toIndex:(NSUInteger)to;
+
+@end
diff --git a/Classes/Core/NSMutableArray+MoveObject.m b/Classes/Core/NSMutableArray+MoveObject.m
new file mode 100644
index 00000000..d58052b8
--- /dev/null
+++ b/Classes/Core/NSMutableArray+MoveObject.m
@@ -0,0 +1,33 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+#import "NSMutableArray+MoveObject.h"
+
+@implementation NSMutableArray (MoveObject)
+
+- (void)qd_moveObjectFromIndex:(NSUInteger)from toIndex:(NSUInteger)to
+{
+ if (to == from)
+ return;
+
+ id objectToMove = self[from];
+ [self removeObjectAtIndex:from];
+ if (to >= [self count]) {
+ [self addObject:objectToMove];
+ } else {
+ [self insertObject:objectToMove atIndex:to];
+ }
+}
+@end
+
diff --git a/quickdialog/QAppearance.h b/Classes/Core/QAppearance.h
similarity index 77%
rename from quickdialog/QAppearance.h
rename to Classes/Core/QAppearance.h
index 50e49dc7..526daeef 100644
--- a/quickdialog/QAppearance.h
+++ b/Classes/Core/QAppearance.h
@@ -1,11 +1,29 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
#import
+@class QSection;
+@class QuickDialogTableView;
+@class QElement;
+
@interface QAppearance : NSObject
@property(nonatomic, strong) UIColor *labelColorDisabled;
@property (nonatomic,strong) UIColor *labelColorEnabled;
-@property (nonatomic,strong) UIFont *labelFont;
+@property (nonatomic,strong) UIFont *titleFont;
@property (nonatomic,strong)UIColor * backgroundColorEnabled;
@property (nonatomic,strong)UIColor * backgroundColorDisabled;
@property (nonatomic) NSTextAlignment labelAlignment;
@@ -32,7 +50,6 @@
@property(nonatomic, strong) UIView *selectedBackgroundView;
@property(nonatomic, strong) UIColor *sectionTitleShadowColor;
@property(nonatomic) BOOL toolbarTranslucent;
-@property(nonatomic) CGFloat cellBorderWidth;
@property(nonatomic) NSNumber * defaultHeightForHeader;
@property(nonatomic) NSNumber * defaultHeightForFooter;
diff --git a/quickdialog/QAppearance.m b/Classes/Core/QAppearance.m
similarity index 79%
rename from quickdialog/QAppearance.m
rename to Classes/Core/QAppearance.m
index a71ca514..7b668c19 100644
--- a/quickdialog/QAppearance.m
+++ b/Classes/Core/QAppearance.m
@@ -1,19 +1,26 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+#import "QAppearance.h"
+#import "QSection.h"
+#import "QElement.h"
@implementation QAppearance {
}
-@synthesize sectionTitleFont = _sectionTitleFont;
-@synthesize sectionTitleColor = _sectionTitleColor;
-@synthesize sectionFooterFont = _sectionFooterFont;
-@synthesize sectionFooterColor = _sectionFooterColor;
-@synthesize entryAlignment = _entryAlignment;
-@synthesize buttonAlignment = _buttonAlignment;
-@synthesize selectedBackgroundView = _selectedBackgroundView;
-@synthesize sectionTitleShadowColor = _sectionTitleShadowColor;
-
-
-- (QAppearance *)init {
+- (instancetype)init {
self = [super init];
if (self) {
[self setDefaults];
@@ -34,7 +41,7 @@ - (id)copyWithZone:(NSZone *)zone {
copy.actionColorDisabled = _actionColorDisabled;
copy.actionColorEnabled = _actionColorEnabled;
- copy.labelFont = _labelFont;
+ copy.titleFont = _titleFont;
copy.labelAlignment = _labelAlignment;
copy.backgroundColorDisabled = _backgroundColorDisabled;
diff --git a/quickdialog/QBindingEvaluator.h b/Classes/Core/QBindingEvaluator.h
similarity index 100%
rename from quickdialog/QBindingEvaluator.h
rename to Classes/Core/QBindingEvaluator.h
diff --git a/quickdialog/QBindingEvaluator.m b/Classes/Core/QBindingEvaluator.m
similarity index 85%
rename from quickdialog/QBindingEvaluator.m
rename to Classes/Core/QBindingEvaluator.m
index 586c5145..b15bf8f0 100644
--- a/quickdialog/QBindingEvaluator.m
+++ b/Classes/Core/QBindingEvaluator.m
@@ -14,6 +14,7 @@
#import "QBindingEvaluator.h"
#import "QuickDialog.h"
+#import "QTextElement.h"
@interface QBindingEvaluator ()
+ (BOOL)stringIsEmpty:(NSString *)aString;
@@ -24,7 +25,7 @@ @implementation QBindingEvaluator {
QRootBuilder *_builder;
}
-- (id)init {
+- (instancetype)init {
self = [super init];
if (self) {
_builder = [QRootBuilder new];
@@ -50,8 +51,8 @@ - (void)bindObject:(id)object toData:(id)data withString:string {
for (NSString *each in [string componentsSeparatedByString:@","]) {
NSArray *bindingParams = [each componentsSeparatedByString:@":"];
- NSString *propName = [((NSString *) [bindingParams objectAtIndex:0]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
- NSString *valueName = [((NSString *) [bindingParams objectAtIndex:1]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+ NSString *propName = [((NSString *) bindingParams[0]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+ NSString *valueName = [((NSString *) bindingParams[1]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([propName isEqualToString:@"iterate"] && [object isKindOfClass:[QSection class]]) {
[self bindSection:(QSection *)object toCollection:[@"self" isEqualToString:valueName] ? data : [data valueForKeyPath:valueName]];
@@ -78,10 +79,7 @@ + (BOOL)stringIsEmpty:(NSString *) aString {
return YES;
}
aString = [aString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
- if ([aString length] == 0) {
- return YES;
- }
- return NO;
+ return [aString length] == 0;
}
- (void)bindSection:(QSection *)section toCollection:(NSArray *)items {
@@ -128,7 +126,7 @@ - (void)bindSection:(QSection *)section toProperties:(NSDictionary *)object {
for (id item in [object allKeys]){
QElement *element = [_builder buildElementWithObject:section.elementTemplate];
[section addElement:element];
- [element bindToObject:[NSDictionary dictionaryWithObjectsAndKeys:item, @"key", [object valueForKey:item], @"value", nil]];
+ [element bindToObject:@{@"key" : item, @"value" : [object valueForKey:item]}];
}
}
@@ -140,8 +138,8 @@ - (void)fetchValueFromObject:(QElement *)element toData:(id)data {
for (NSString *each in [element.bind componentsSeparatedByString:@","])
{
NSArray *bindingParams = [each componentsSeparatedByString:@":"];
- NSString *propName = [((NSString *) [bindingParams objectAtIndex:0]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
- NSString *valueName = [((NSString *) [bindingParams objectAtIndex:1]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+ NSString *propName = [((NSString *) bindingParams[0]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+ NSString *valueName = [((NSString *) bindingParams[1]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (![propName isEqualToString:@"iterate"] && ![valueName isEqualToString:@"self"]) {
@try {
diff --git a/Classes/Core/QDynamicDataSection.h b/Classes/Core/QDynamicDataSection.h
new file mode 100644
index 00000000..16434651
--- /dev/null
+++ b/Classes/Core/QDynamicDataSection.h
@@ -0,0 +1,26 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+#import
+
+#import "QSection.h"
+@interface QDynamicDataSection : QSection {
+
+
+
+}
+@property(nonatomic, strong) NSString *emptyMessage;
+
+
+@end
diff --git a/quickdialog/QDynamicDataSection.m b/Classes/Core/QDynamicDataSection.m
similarity index 54%
rename from quickdialog/QDynamicDataSection.m
rename to Classes/Core/QDynamicDataSection.m
index 7ded634b..73428e83 100644
--- a/quickdialog/QDynamicDataSection.m
+++ b/Classes/Core/QDynamicDataSection.m
@@ -1,15 +1,27 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
#import "QDynamicDataSection.h"
#import "QuickDialog.h"
#import "QEmptyListElement.h"
@implementation QDynamicDataSection {
- NSString *_emptyMessage;
BOOL showLoading;
}
-@synthesize emptyMessage = _emptyMessage;
-
-- (QDynamicDataSection *)init {
+- (instancetype)init {
self = [super init];
if (self) {
_emptyMessage = @"Empty";
@@ -32,8 +44,8 @@ - (void)bindToObject:(id)data withString:(NSString *)withBindString
for (NSString *each in [self.bind componentsSeparatedByString:@","]) {
NSArray *bindingParams = [each componentsSeparatedByString:@":"];
- NSString *propName = [((NSString *) [bindingParams objectAtIndex:0]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
- NSString *valueName = [((NSString *) [bindingParams objectAtIndex:1]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+ NSString *propName = [((NSString *) bindingParams[0]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+ NSString *valueName = [((NSString *) bindingParams[1]) stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([propName isEqualToString:@"iterate"]) {
collection = [data valueForKeyPath:valueName];
diff --git a/Classes/Core/QElement+Appearance.h b/Classes/Core/QElement+Appearance.h
new file mode 100644
index 00000000..b0b6cacd
--- /dev/null
+++ b/Classes/Core/QElement+Appearance.h
@@ -0,0 +1,29 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
+#import
+#import "QElement.h"
+
+@class QAppearance;
+
+@interface QElement (Appearance)
+
+@property(nonatomic, retain) QAppearance *appearance;
+
++ (QAppearance *)appearance;
++ (void)setAppearance:(QAppearance *)newAppearance;
+
+
+@end
diff --git a/quickdialog/QElement+Appearance.m b/Classes/Core/QElement+Appearance.m
similarity index 64%
rename from quickdialog/QElement+Appearance.m
rename to Classes/Core/QElement+Appearance.m
index 36602dca..053968f6 100644
--- a/quickdialog/QElement+Appearance.m
+++ b/Classes/Core/QElement+Appearance.m
@@ -1,6 +1,23 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
#import
#import "QElement+Appearance.h"
-#import "QClassicAppearance.h"
+#import "QSection.h"
+#import "QRootElement+JsonBuilder.h"
+#import "QFlatAppearance.h"
static void * const KEY_APPEARANCE_OBJECT = (void*)&KEY_APPEARANCE_OBJECT;
@@ -14,11 +31,7 @@ + (QAppearance *)appearance {
appearance = [[self class].superclass appearance];
}
if (appearance==nil) {
-#if __IPHONE_7_0
- appearance = [[[UIDevice currentDevice] systemVersion] floatValue]>=7.f ? [QFlatAppearance new] : [QClassicAppearance new];
-#else
- appearance = [QClassicAppearance new];
-#endif
+ appearance = [QFlatAppearance new];
[self setAppearance:appearance];
}
return appearance;
diff --git a/quickdialog/QElement.h b/Classes/Core/QElement.h
similarity index 88%
rename from quickdialog/QElement.h
rename to Classes/Core/QElement.h
index 6bbaab72..86187f9e 100644
--- a/quickdialog/QElement.h
+++ b/Classes/Core/QElement.h
@@ -28,10 +28,9 @@
@protected
__weak QSection *_parentSection;
- __weak UIViewController *_controller;
NSString *_key;
NSString *_bind;
-
+
CGFloat _height;
BOOL _hidden;
@@ -45,12 +44,15 @@
@property(nonatomic, retain) NSString *controllerAction;
@property(nonatomic, retain) NSString *controllerAccessoryAction;
+@property(nonatomic, weak) UITableViewCell *currentCell;
+@property(nonatomic, weak) QuickDialogController *currentController;
+@property(nonatomic, weak) QuickDialogTableView *currentTableView;
+
@property(nonatomic) CGFloat height;
@property(nonatomic) BOOL hidden;
@property(nonatomic,readonly) NSUInteger visibleIndex;
@property(nonatomic, weak) QSection *parentSection;
-@property(nonatomic, weak) UIViewController *controller;
@property(nonatomic, retain) NSString *key;
@property(nonatomic, retain) id object;
@@ -66,18 +68,20 @@
// Corresponds to UITableViewCell property accessibilityIdentifier
@property(nonatomic, copy) NSString *accessibilityIdentifier;
-- (QElement *)initWithKey:(NSString *)key;
+
+@property(nonatomic, strong) Class cellClass;
+
+- (instancetype)init;
+- (instancetype)initWithKey:(NSString *)key;
- (NSIndexPath*) getIndexPath;
- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller;
--(QTableViewCell *)getOrCreateEmptyCell:(QuickDialogTableView *)tableView;
-
+- (QTableViewCell *)createNewCell:(QuickDialogTableView *)tableView;
- (void)selectedAccessory:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath;
-
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath;
- (CGFloat)getRowHeightForTableView:(QuickDialogTableView *)tableView;
diff --git a/quickdialog/QElement.m b/Classes/Core/QElement.m
similarity index 58%
rename from quickdialog/QElement.m
rename to Classes/Core/QElement.m
index ee68a8d6..c892cee2 100644
--- a/quickdialog/QElement.m
+++ b/Classes/Core/QElement.m
@@ -18,70 +18,64 @@
#import "QuickDialog.h"
@implementation QElement {
-@private
- id _object;
- NSString *_controllerAccessoryAction;
}
-@synthesize enabled = _enabled;
-@synthesize parentSection = _parentSection;
-@synthesize key = _key;
-@synthesize bind = _bind;
-
-@synthesize onSelected = _onSelected;
-@synthesize controllerAction = _controllerAction;
-@synthesize object = _object;
-@synthesize height = _height;
-@synthesize hidden = _hidden;
@dynamic visibleIndex;
-@synthesize controllerAccessoryAction = _controllerAccessoryAction;
-
-@synthesize labelingPolicy = _labelingPolicy;
-- (QElement *)init {
+- (instancetype)init {
self = [super init];
if (self) {
- self.enabled = YES;
- self.shallowBind = YES;
+ [self internalInit];
+ self.cellClass = [QTableViewCell class];
}
return self;
}
-- (QElement *)initWithKey:(NSString *)key {
+- (void)internalInit
+{
+ self.enabled = YES;
+ self.shallowBind = YES;
+ self.height = 44;
+}
+
+- (instancetype)initWithKey:(NSString *)key {
self = [super init];
if (self){
- self.key = key;
- self.enabled = YES;
- self.shallowBind = YES;
+ [self internalInit];
}
return self;
}
- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- _controller = controller;
-
- QTableViewCell *cell= [self getOrCreateEmptyCell:tableView];
-
- [cell applyAppearanceForElement:self];
-
- cell.textLabel.text = nil;
- cell.detailTextLabel.text = nil;
- cell.imageView.image = nil;
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- cell.showsReorderControl = YES;
- cell.accessoryView = nil;
- cell.labelingPolicy = _labelingPolicy;
- return cell;
-}
-- (QTableViewCell *)getOrCreateEmptyCell:(QuickDialogTableView *)tableView {
- QTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"QuickformElementCell%@%@", self.key, self.class]];
- if (cell == nil){
- cell = [[QTableViewCell alloc] initWithReuseIdentifier:[NSString stringWithFormat:@"QuickformElementCell%@%@", self.key, NSStringFromClass(self.class)]];
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"QD_%@_%@", self.key, self.cellClass]];
+ if (cell == nil) {
+ cell = [self createNewCell:tableView];
}
+
+ self.currentCell = cell;
+ self.currentTableView = tableView;
+ self.currentController = controller;
+
+ if ([cell respondsToSelector:@selector(applyAppearanceForElement:)])
+ [cell performSelector:@selector(applyAppearanceForElement:) withObject:self];
+
return cell;
}
+- (void)setCurrentCell:(UITableViewCell *)currentCell
+{
+ _currentCell = currentCell;
+ if ([_currentCell respondsToSelector:@selector(setCurrentElement:)])
+ [_currentCell performSelector:@selector(setCurrentElement:) withObject:self];
+}
+
+
+- (QTableViewCell *)createNewCell:(QuickDialogTableView *)tableView {
+ QTableViewCell *cell = (QTableViewCell *) [self.cellClass alloc];
+ cell = [cell initWithReuseIdentifier:[NSString stringWithFormat:@"QD_%@_%@", self.key, NSStringFromClass(self.class)]];
+ return cell;
+}
- (void)selectedAccessory:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath{
@@ -96,7 +90,8 @@ - (void)selectedAccessory:(QuickDialogTableView *)tableView controller:(QuickDi
}
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath {
- _controller = controller;
+ self.currentController = controller;
+
[[tableView cellForRowAtIndexPath:indexPath] becomeFirstResponder];
[self performAction];
}
@@ -138,26 +133,29 @@ - (void)fetchValueUsingBindingsIntoObject:(id)data {
- (void)performAction
{
- if (_onSelected!= nil)
- _onSelected();
- if (self.controllerAction!=NULL){
- SEL selector = NSSelectorFromString(self.controllerAction);
- if ([_controller respondsToSelector:selector]) {
- ((void (*)(id, SEL, id)) objc_msgSend)(_controller, selector, self);
- } else {
- NSLog(@"No method '%@' was found on controller %@", self.controllerAction, [_controller class]);
+ if ((self.currentController != nil && self.controllerAction != nil) || _onSelected != nil) {
+ if (_onSelected!= nil)
+ _onSelected();
+
+ if (self.controllerAction!=NULL){
+ SEL selector = NSSelectorFromString(self.controllerAction);
+ if ([self.currentController respondsToSelector:selector]) {
+ ((void (*)(id, SEL, id)) objc_msgSend)(self.currentController, selector, self);
+ } else {
+ NSLog(@"No method '%@' was found on controller %@", self.controllerAction, [self.currentController class]);
+ }
}
}
}
-(void)performAccessoryAction{
- if (_controller!=nil && self.controllerAccessoryAction!=nil) {
+ if (self.currentController !=nil && self.controllerAccessoryAction!=nil) {
SEL selector = NSSelectorFromString(self.controllerAccessoryAction);
- if ([_controller respondsToSelector:selector]) {
- ((void (*)(id, SEL, id)) objc_msgSend)(_controller, selector, self);
+ if ([self.currentController respondsToSelector:selector]) {
+ ((void (*)(id, SEL, id)) objc_msgSend)(self.currentController, selector, self);
} else {
- NSLog(@"No method '%@' was found on controller %@", self.controllerAccessoryAction, [_controller class]);
+ NSLog(@"No method '%@' was found on controller %@", self.controllerAccessoryAction, [self.currentController class]);
}
}
}
diff --git a/quickdialog/QEmptyListElement.h b/Classes/Core/QEmptyListElement.h
similarity index 95%
rename from quickdialog/QEmptyListElement.h
rename to Classes/Core/QEmptyListElement.h
index 0793d932..2b9fb16d 100644
--- a/quickdialog/QEmptyListElement.h
+++ b/Classes/Core/QEmptyListElement.h
@@ -12,12 +12,13 @@
// permissions and limitations under the License.
//
+
#import "QLabelElement.h"
@interface QEmptyListElement : QLabelElement {
}
-- (QEmptyListElement *)init;
+- (instancetype)init;
@end
diff --git a/quickdialog/QEmptyListElement.m b/Classes/Core/QEmptyListElement.m
similarity index 71%
rename from quickdialog/QEmptyListElement.m
rename to Classes/Core/QEmptyListElement.m
index f5935e9c..5bb4efdd 100644
--- a/quickdialog/QEmptyListElement.m
+++ b/Classes/Core/QEmptyListElement.m
@@ -13,25 +13,24 @@
//
#import "QEmptyListElement.h"
+#import "QElement+Appearance.h"
+#import "QAppearance.h"
@implementation QEmptyListElement
-- (QEmptyListElement *)init {
+- (instancetype)init {
self = [super initWithTitle:@"Empty" Value:nil];
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QEmptyListElement"];
- if (cell == nil){
- cell= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"QEmptyListElement"];
- }
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.text = _title;
cell.textLabel.textAlignment = NSTextAlignmentCenter;
cell.textLabel.textColor = [UIColor colorWithWhite:0.7f alpha:1.0f];
- cell.textLabel.font = self.appearance.labelFont;
- return cell;
+ cell.textLabel.font = self.appearance.titleFont;
}
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath {
diff --git a/quickdialog/QEntryElement.h b/Classes/Core/QEntryElement.h
similarity index 95%
rename from quickdialog/QEntryElement.h
rename to Classes/Core/QEntryElement.h
index 8f33f038..ff0118ef 100644
--- a/quickdialog/QEntryElement.h
+++ b/Classes/Core/QEntryElement.h
@@ -49,8 +49,8 @@
@property(nonatomic, copy) NSString *customDateFormat;
-- (QEntryElement *)init;
-- (QEntryElement *)initWithTitle:(NSString *)string Value:(NSString *)param Placeholder:(NSString *)string1;
+- (instancetype)init;
+- (instancetype)initWithTitle:(NSString *)title value:(NSString *)value placeholder:(NSString *)placeholder;
- (BOOL)canTakeFocus;
diff --git a/quickdialog/QEntryElement.m b/Classes/Core/QEntryElement.m
similarity index 70%
rename from quickdialog/QEntryElement.m
rename to Classes/Core/QEntryElement.m
index 1a973527..2cb9bfc3 100644
--- a/quickdialog/QEntryElement.m
+++ b/Classes/Core/QEntryElement.m
@@ -14,19 +14,10 @@
#import "QEntryElement.h"
#import "QuickDialog.h"
-@implementation QEntryElement
-
-@synthesize textValue = _textValue;
-@synthesize placeholder = _placeholder;
-@synthesize prefix = _prefix;
-@synthesize suffix = _suffix;
-@synthesize hiddenToolbar = _hiddenToolbar;
-
-@synthesize onValueChanged = _onValueChanged;
-@synthesize delegate = _delegate;
+@implementation QEntryElement
-- (QEntryElement *)init {
+- (instancetype)init {
self = [super init];
if (self){
self.autocapitalizationType = UITextAutocapitalizationTypeSentences;
@@ -37,42 +28,40 @@ - (QEntryElement *)init {
self.enablesReturnKeyAutomatically = NO;
self.secureTextEntry = NO;
self.maxLength = 0;
+
+ self.cellClass = [QEntryTableViewCell class];
}
return self;
}
-- (QEntryElement *)initWithTitle:(NSString *)title Value:(NSString *)value Placeholder:(NSString *)placeholder {
- self = [self init];
- if (self) {
- _title = title;
- _textValue = value;
- _placeholder = placeholder;
+- (instancetype)initWithTitle:(NSString *)title value:(NSString *)value placeholder:(NSString *)placeholder
+{
+ QEntryElement *element = [self init];
+ if (element!=nil) {
+ self.title = title;
+ self.value = value;
+ self.placeholder = placeholder;
}
- return self;
+ return element;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
-
- self.controller = controller;
- QEntryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QuickformEntryElement"];
- if (cell==nil){
- cell = [[QEntryTableViewCell alloc] init];
- }
+- (void)setCurrentCell:(UITableViewCell *)qCell
+{
+ super.currentCell = qCell;
- [cell applyAppearanceForElement:self];
+ QEntryTableViewCell *cell = (QEntryTableViewCell *) qCell;
+ cell.textField.text = [self.value description];
+ cell.textField.placeholder = self.placeholder;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textField.enabled = self.enabled;
cell.textField.userInteractionEnabled = self.enabled;
- cell.textField.textAlignment = self.appearance.entryAlignment;
cell.imageView.image = self.image;
- [cell prepareForElement:self inTableView:tableView];
- return cell;
}
+
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath {
[super selected:tableView controller:controller indexPath:indexPath];
-
}
- (void) fieldDidEndEditing
@@ -102,7 +91,6 @@ - (void)handleEditingChanged:(QEntryTableViewCell *)cell
#pragma mark - UITextInputTraits
-@synthesize autocorrectionType = _autocorrectionType;
@synthesize autocapitalizationType = _autocapitalizationType;
@synthesize keyboardType = _keyboardType;
@synthesize keyboardAppearance = _keyboardAppearance;
diff --git a/quickdialog/QEntryTableViewCell.h b/Classes/Core/QEntryTableViewCell.h
similarity index 83%
rename from quickdialog/QEntryTableViewCell.h
rename to Classes/Core/QEntryTableViewCell.h
index 7665b074..3e865183 100644
--- a/quickdialog/QEntryTableViewCell.h
+++ b/Classes/Core/QEntryTableViewCell.h
@@ -26,18 +26,14 @@
@interface QEntryTableViewCell : QTableViewCell {
- QEntryElement *_entryElement;
- UITextField *_textField;
-
-@protected
- __unsafe_unretained QuickDialogTableView *_quickformTableView;
}
+@property(nonatomic, weak) QEntryElement *currentEntryElement;
@property(nonatomic, strong) UITextField *textField;
- (void)updatePrevNextStatus;
-- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView;
+- (void)prepareForElement:(QEntryElement *)element;
- (UIToolbar *)createActionBar;
@@ -45,7 +41,6 @@
- (CGRect)calculateFrameForEntryElement;
-
- (BOOL)handleActionBarDone:(UIBarButtonItem *)doneButton;
- (void)recalculateEntryFieldPosition;
diff --git a/Classes/Core/QEntryTableViewCell.m b/Classes/Core/QEntryTableViewCell.m
new file mode 100644
index 00000000..332afc1a
--- /dev/null
+++ b/Classes/Core/QEntryTableViewCell.m
@@ -0,0 +1,335 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+#import "QEntryTableViewCell.h"
+#import "QuickDialog.h"
+
+static const int QCellMarginDouble = 16;
+static const int QCellMargin = 8;
+
+
+@interface QEntryTableViewCell ()
+
+@property(nonatomic, strong) UIBarButtonItem *keyboardPreviousButton;
+@property(nonatomic, strong) UIBarButtonItem *keyboardNextButton;
+
+- (void)moveFocusToElement:(QEntryElement *)control;
+@end
+
+@implementation QEntryTableViewCell {
+}
+
+
+
+- (QEntryElement *)currentEntryElement
+{
+ return (QEntryElement *)self.currentElement;
+}
+
+- (void)createSubviews {
+ self.textField = [[QTextField alloc] init];
+}
+
+- (void)setTextField:(UITextField *)textField
+{
+ if (self.textField!=nil){
+ [self.textField removeTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged];
+ [self.textField removeFromSuperview];
+ }
+ _textField = textField;
+ self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
+ self.textField.borderStyle = UITextBorderStyleNone;
+ self.textField.delegate = self;
+ self.textField.clearButtonMode = UITextFieldViewModeWhileEditing;
+ self.textField.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
+ [self.textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged];
+ self.textField.backgroundColor = [[UIColor greenColor] colorWithAlphaComponent:0.5];
+ self.textLabel.backgroundColor = [[UIColor yellowColor] colorWithAlphaComponent:0.5];
+ [self.contentView addSubview:self.textField];
+}
+
+- (instancetype)initWithReuseIdentifier:(NSString *)string
+{
+ self = [super initWithReuseIdentifier:string];
+ if (self) {
+ self.selectionStyle = UITableViewCellSelectionStyleNone;
+ [self createSubviews];
+ }
+ return self;
+}
+
+- (CGRect)calculateFrameForEntryElement {
+ NSInteger extra = (self.textField.clearButtonMode == UITextFieldViewModeNever) ? QCellMarginDouble : QCellMargin;
+
+ if (self.currentEntryElement.title == NULL && self.currentEntryElement.image==NULL) {
+ return CGRectMake(QCellMarginDouble, QCellMargin, self.contentView.frame.size.width - extra - QCellMarginDouble, self.frame.size.height - QCellMarginDouble);
+ }
+
+ if (self.currentEntryElement.title == NULL && self.currentEntryElement.image!=NULL){
+ self.imageView.image = self.currentEntryElement.image;
+ [self.imageView sizeToFit];
+ return CGRectMake(CGRectGetMaxX(self.imageView.frame) + QCellMargin, QCellMargin, self.contentView.frame.size.width - extra - QCellMarginDouble-self.imageView.frame.size.width, self.frame.size.height - QCellMarginDouble);
+ }
+ CGFloat totalWidth = self.contentView.frame.size.width;
+ CGFloat titleWidth = 0;
+
+ if (CGRectEqualToRect(CGRectZero, self.currentEntryElement.parentSection.entryPosition)) {
+ for (QElement *el in self.currentEntryElement.parentSection.elements){
+ if ([el isKindOfClass:[QEntryElement class]]){
+ QEntryElement *q = (QEntryElement*)el;
+ CGFloat imageWidth = q.image == NULL ? 0 : self.imageView.frame.size.width + QCellMargin;
+ CGRect rect = [((QEntryElement *) el).title boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)
+ options:NSStringDrawingUsesLineFragmentOrigin
+ attributes:@{ NSFontAttributeName : self.textLabel.font}
+ context:nil];
+ titleWidth = rect.size.width + imageWidth;
+ }
+ }
+
+ self.currentEntryElement.parentSection.entryPosition = CGRectMake(
+ titleWidth + QCellMarginDouble + QCellMargin,
+ QCellMargin,
+ totalWidth - titleWidth - extra - QCellMarginDouble - QCellMargin,
+ self.frame.size.height - QCellMarginDouble);
+ }
+
+ return self.currentEntryElement.parentSection.entryPosition;
+}
+
+- (void)updatePrevNextStatus {
+ [self.keyboardPreviousButton setEnabled:[self.currentEntryElement.parentSection.rootElement findElementToFocusOnBefore:self.currentEntryElement]!=nil];
+ [self.keyboardNextButton setEnabled:[self.currentEntryElement.parentSection.rootElement findElementToFocusOnAfter:self.currentEntryElement]!=nil];
+}
+
+- (void)prepareForElement:(QEntryElement *)element
+{
+ [self applyAppearanceForElement:element];
+
+ self.textLabel.text = element.title;
+ self.labelingPolicy = element.labelingPolicy;
+
+ self.currentEntryElement = element;
+ self.textField.text = self.currentEntryElement.textValue;
+ self.textField.placeholder = self.currentEntryElement.placeholder;
+ if ([self.textField isKindOfClass:[QTextField class]]) {
+ QTextField *qtf = (QTextField *) self.textField;
+ qtf.prefix = self.currentEntryElement.prefix;
+ qtf.suffix = self.currentEntryElement.suffix;
+ }
+
+ self.textField.autocapitalizationType = self.currentEntryElement.autocapitalizationType;
+ self.textField.autocorrectionType = self.currentEntryElement.autocorrectionType;
+ self.textField.keyboardType = self.currentEntryElement.keyboardType;
+ self.textField.keyboardAppearance = self.currentEntryElement.keyboardAppearance;
+ self.textField.secureTextEntry = self.currentEntryElement.secureTextEntry;
+ self.textField.clearsOnBeginEditing = self.currentEntryElement.clearsOnBeginEditing;
+ self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
+ self.textField.textAlignment = self.currentEntryElement.appearance.entryAlignment;
+
+ self.textField.returnKeyType = self.currentEntryElement.returnKeyType;
+ self.textField.enablesReturnKeyAutomatically = self.currentEntryElement.enablesReturnKeyAutomatically;
+
+ self.accessoryType = self.currentEntryElement.accessoryType;
+
+ if (self.currentEntryElement.hiddenToolbar){
+ self.textField.inputAccessoryView = nil;
+ } else if (self.textField!=nil){
+ UIToolbar *toolbar = [self createActionBar];
+ toolbar.barStyle = element.appearance.toolbarStyle;
+ toolbar.translucent = element.appearance.toolbarTranslucent;
+ self.textField.inputAccessoryView = toolbar;
+ }
+
+ [self updatePrevNextStatus];
+
+}
+
+- (void)layoutSubviews {
+ [super layoutSubviews];
+ [self recalculateEntryFieldPosition];
+}
+
+
+-(void)recalculateEntryFieldPosition {
+ self.currentEntryElement.parentSection.entryPosition = CGRectZero;
+ CGRect textFieldFrame = [self calculateFrameForEntryElement];
+
+ self.textField.frame = textFieldFrame;
+
+ self.textLabel.frame = CGRectMake(QCellMarginDouble, QCellMargin, textFieldFrame.origin.x - QCellMarginDouble - QCellMargin, textFieldFrame.size.height);
+
+}
+
+- (void)textFieldEditingChanged:(UITextField *)textFieldEditingChanged {
+ self.currentEntryElement.textValue = self.textField.text;
+
+ [self.currentEntryElement handleEditingChanged:self];
+}
+
+- (void)textFieldDidBeginEditing:(UITextField *)textField {
+ dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 50 * USEC_PER_SEC);
+ dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
+ [self.currentEntryElement.currentTableView scrollToRowAtIndexPath:[self.currentEntryElement getIndexPath] atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
+ });
+
+
+ if (self.textField.returnKeyType == UIReturnKeyDefault) {
+ UIReturnKeyType returnType = ([self.currentEntryElement.parentSection.rootElement findElementToFocusOnAfter:self.currentEntryElement]!=nil) ? UIReturnKeyNext : UIReturnKeyDone;
+ self.textField.returnKeyType = returnType;
+ }
+
+ if(self.currentEntryElement && self.currentEntryElement.delegate && [self.currentEntryElement.delegate respondsToSelector:@selector(QEntryDidBeginEditingElement:andCell:)]){
+ [self.currentEntryElement.delegate QEntryDidBeginEditingElement:self.currentEntryElement andCell:self];
+ }
+}
+
+- (void)textFieldDidEndEditing:(UITextField *)textField {
+ self.currentEntryElement.textValue = self.textField.text;
+
+ if(self.currentEntryElement && self.currentEntryElement.delegate && [self.currentEntryElement.delegate respondsToSelector:@selector(QEntryDidEndEditingElement:andCell:)]){
+ [self.currentEntryElement.delegate QEntryDidEndEditingElement:self.currentEntryElement andCell:self];
+ }
+
+ [self.currentEntryElement performSelector:@selector(fieldDidEndEditing)];
+}
+
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
+
+ NSUInteger newLength = [textField.text length] + [string length] - range.length;
+ if (newLength > [textField.text length]) {
+ if (0 != self.currentEntryElement.maxLength && textField.text.length >= self.currentEntryElement.maxLength) {
+ return NO;
+ }
+ }
+
+ BOOL shouldChangeCurrent = [self.currentEntryElement.delegate respondsToSelector:@selector(QEntryShouldChangeCharactersInRange:withString:forElement:andCell:)]
+ ? [self.currentEntryElement.delegate QEntryShouldChangeCharactersInRange:range withString:string forElement:self.currentEntryElement andCell:self]
+ : YES;
+ return self.currentEntryElement && self.currentEntryElement.delegate
+ && shouldChangeCurrent;
+}
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+
+ QEntryElement *element = [self.currentEntryElement.parentSection.rootElement findElementToFocusOnAfter:self.currentEntryElement];
+ if (element!=nil){
+ UITableViewCell *cell = [self.currentEntryElement.currentTableView cellForElement:element];
+ if (cell!=nil){
+ [cell becomeFirstResponder];
+ }
+ } else {
+ [self.textField resignFirstResponder];
+ }
+
+ if(self.currentEntryElement && self.currentEntryElement.delegate && [self.currentEntryElement.delegate respondsToSelector:@selector(QEntryShouldReturnForElement:andCell:)]){
+ return [self.currentEntryElement.delegate QEntryShouldReturnForElement:self.currentEntryElement andCell:self];
+ }
+
+ return YES;
+}
+
+- (void)handleActionBarPrevious
+{
+ QEntryElement *element = [self.currentEntryElement.parentSection.rootElement findElementToFocusOnBefore:self.currentEntryElement];
+ [self moveFocusToElement:element];
+}
+
+- (void)handleActionBarNext
+{
+ QEntryElement *element = [self.currentEntryElement.parentSection.rootElement findElementToFocusOnAfter:self.currentEntryElement];
+ [self moveFocusToElement:element];
+
+}
+
+- (void)moveFocusToElement:(QEntryElement *)element {
+
+ if (element != nil) {
+
+ UITableViewCell *cell = [self.currentElement.currentTableView cellForElement:element];
+ if (cell != nil) {
+ [cell becomeFirstResponder];
+ }
+ else {
+
+ [self.currentElement.currentTableView scrollToRowAtIndexPath:[element getIndexPath]
+ atScrollPosition:UITableViewScrollPositionMiddle
+ animated:YES];
+
+ dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t) (0.3 * NSEC_PER_SEC));
+ dispatch_after(popTime, dispatch_get_main_queue(), ^{
+ UITableViewCell *c = [self.currentElement.currentTableView cellForElement:element];
+ if (c != nil) {
+ [c becomeFirstResponder];
+ }
+ });
+ }
+ }
+
+ if (self.currentEntryElement.keepSelected) {
+ [self.currentElement.currentTableView deselectRowAtIndexPath:[self.currentEntryElement getIndexPath] animated:YES];
+ }
+}
+
+- (BOOL)handleActionBarDone:(UIBarButtonItem *)doneButton {
+ [self endEditing:YES];
+ [self endEditing:NO];
+ [self.textField resignFirstResponder];
+ [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
+
+ if(self.currentEntryElement && self.currentEntryElement.delegate && [self.currentEntryElement.delegate respondsToSelector:@selector(QEntryMustReturnForElement:andCell:)]){
+ [self.currentEntryElement.delegate QEntryMustReturnForElement:self.currentEntryElement andCell:self];
+ }
+
+ return NO;
+}
+
+- (BOOL)becomeFirstResponder {
+ [self.textField becomeFirstResponder];
+ return YES;
+}
+
+- (BOOL)resignFirstResponder {
+ return YES;
+}
+
+
+- (void)applyAppearanceForElement:(QElement *)element {
+ [super applyAppearanceForElement:element];
+
+ QAppearance *appearance = element.appearance;
+ self.textField.textAlignment = appearance.entryAlignment;
+ self.textField.font = appearance.entryFont;
+ self.textField.textColor = element.enabled ? appearance.entryTextColorEnabled : appearance.entryTextColorDisabled;
+}
+
+-(UIToolbar *)createActionBar {
+ UIToolbar *actionBar = [[UIToolbar alloc] init];
+ [actionBar sizeToFit];
+
+ UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", @"") style:UIBarButtonItemStyleDone target:self action:@selector(handleActionBarDone:)];
+
+ UIImage *previousImage = [[UIImage imageNamed:@"qd_keyboardPrevious"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+ UIImage *nextImage = [[UIImage imageNamed:@"qd_keyboardNext"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+
+ self.keyboardPreviousButton = [[UIBarButtonItem alloc] initWithImage:previousImage style:UIBarButtonItemStylePlain target:self action:@selector(handleActionBarPrevious)];
+ self.keyboardNextButton = [[UIBarButtonItem alloc] initWithImage:nextImage style:UIBarButtonItemStylePlain target:self action:@selector(handleActionBarNext)];
+
+ UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
+ [actionBar setItems:@[self.keyboardPreviousButton, self.keyboardNextButton, flexible, doneButton]];
+
+ return actionBar;
+}
+
+
+@end
diff --git a/Classes/Core/QFlatAppearance.h b/Classes/Core/QFlatAppearance.h
new file mode 100644
index 00000000..4c0f5f1f
--- /dev/null
+++ b/Classes/Core/QFlatAppearance.h
@@ -0,0 +1,22 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
+#import
+#import "QAppearance.h"
+
+@interface QFlatAppearance : QAppearance
+
+
+@end
diff --git a/quickdialog/QFlatAppearance.m b/Classes/Core/QFlatAppearance.m
similarity index 71%
rename from quickdialog/QFlatAppearance.m
rename to Classes/Core/QFlatAppearance.m
index ba550cad..80f5ed36 100644
--- a/quickdialog/QFlatAppearance.m
+++ b/Classes/Core/QFlatAppearance.m
@@ -1,11 +1,19 @@
//
-// Created by Eduardo Scoz on 7/18/13.
+// Copyright 2011 ESCOZ Inc - http://escoz.com
//
-// To change the template use AppCode | Preferences | File Templates.
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
//
-
#import "QFlatAppearance.h"
+#import "QSection.h"
@implementation QFlatAppearance {
@@ -45,15 +53,9 @@ - (void)setDefaults {
self.toolbarStyle = UIBarStyleDefault;
self.toolbarTranslucent = YES;
- self.cellBorderWidth = 14;
-
-#if __IPHONE_7_0
- if ([UIFont respondsToSelector:@selector(preferredFontForTextStyle:)]) {
- self.valueFont = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
- self.labelFont = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
- self.entryFont = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
- }
-#endif
+ self.valueFont = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
+ self.titleFont = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
+ self.entryFont = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
}
diff --git a/quickdialog/QLabelElement.h b/Classes/Core/QLabelElement.h
similarity index 94%
rename from quickdialog/QLabelElement.h
rename to Classes/Core/QLabelElement.h
index 5a0957a8..3229697e 100644
--- a/quickdialog/QLabelElement.h
+++ b/Classes/Core/QLabelElement.h
@@ -33,10 +33,9 @@
@property(nonatomic, assign) UITableViewCellAccessoryType accessoryType;
@property(nonatomic, strong) id value;
-
@property(nonatomic) BOOL keepSelected;
-- (QLabelElement *)initWithTitle:(NSString *)string Value:(id)value;
+- (instancetype)initWithTitle:(NSString *)string Value:(id)value;
- (void)setIconNamed:(NSString *)name;
@end
diff --git a/quickdialog/QLabelElement.m b/Classes/Core/QLabelElement.m
similarity index 82%
rename from quickdialog/QLabelElement.m
rename to Classes/Core/QLabelElement.m
index 8ee84106..ef4d565b 100644
--- a/quickdialog/QLabelElement.m
+++ b/Classes/Core/QLabelElement.m
@@ -20,14 +20,7 @@ @implementation QLabelElement {
UITableViewCellAccessoryType _accessoryType;
}
-
-@synthesize image = _image;
-@synthesize value = _value;
-@synthesize accessoryType = _accessoryType;
-@synthesize keepSelected = _keepSelected;
-
-
-- (QLabelElement *)initWithTitle:(NSString *)title Value:(id)value {
+- (instancetype)initWithTitle:(NSString *)title Value:(id)value {
self = [super init];
_title = title;
_value = value;
@@ -46,25 +39,24 @@ - (NSString *)imageNamed {
}
-(void)setIconNamed:(NSString *)name {
-#if __IPHONE_7_0
if ([self.image respondsToSelector:@selector(imageWithRenderingMode:)] && name != nil) {
self.image = [[UIImage imageNamed:name] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
}
-#endif
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- QTableViewCell *cell = (QTableViewCell *) [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.text = _title;
cell.detailTextLabel.text = [_value description];
cell.imageView.image = _image;
cell.accessoryType = _accessoryType != UITableViewCellAccessoryNone ? _accessoryType : self.controllerAccessoryAction != nil ? UITableViewCellAccessoryDetailDisclosureButton : ( self.sections!= nil || self.controllerAction!=nil ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone);
cell.selectionStyle = self.sections!= nil || self.controllerAction!=nil || self.onSelected!=nil ? UITableViewCellSelectionStyleBlue: UITableViewCellSelectionStyleNone;
- return cell;
}
+
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)path {
[super selected:tableView controller:controller indexPath:path];
if (!self.keepSelected)
diff --git a/quickdialog/QLoadingElement.h b/Classes/Core/QLoadingElement.h
similarity index 90%
rename from quickdialog/QLoadingElement.h
rename to Classes/Core/QLoadingElement.h
index 27cb0083..c4244933 100644
--- a/quickdialog/QLoadingElement.h
+++ b/Classes/Core/QLoadingElement.h
@@ -14,6 +14,7 @@
#import "QuickDialog.h"
+#import "QTextElement.h"
#import "QLabelElement.h"
#import
@@ -24,4 +25,5 @@
@property(nonatomic) UIActivityIndicatorViewStyle indicatorStyle;
+@property(nonatomic, strong) Class activityIndicatorClass;
@end
diff --git a/quickdialog/QLoadingElement.m b/Classes/Core/QLoadingElement.m
similarity index 52%
rename from quickdialog/QLoadingElement.m
rename to Classes/Core/QLoadingElement.m
index b4726f0a..9e910a40 100644
--- a/quickdialog/QLoadingElement.m
+++ b/Classes/Core/QLoadingElement.m
@@ -15,39 +15,39 @@
#import "QLoadingElement.h"
@implementation QLoadingElement {
-@private
- UIActivityIndicatorViewStyle _indicatorStyle;
}
-@synthesize indicatorStyle = _indicatorStyle;
-
-- (QLoadingElement *)init {
+- (instancetype)init {
self = [super init];
self.indicatorStyle = UIActivityIndicatorViewStyleGray;
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- _controller = controller;
- QTableViewCell *const cell = [[QTableViewCell alloc] init];
- [cell applyAppearanceForElement:self];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
+
cell.selectionStyle = UITableViewCellSelectionStyleNone;
- UIActivityIndicatorView *spin = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.indicatorStyle];
+ UIActivityIndicatorView *spin;
+
+ if (self.activityIndicatorClass != nil)
+ spin = [self.activityIndicatorClass new];
+ else
+ spin = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.indicatorStyle];
+
[spin startAnimating];
[spin sizeToFit];
if (self.title == nil){
- CGFloat posX = (_controller.view.frame.size.width-spin.frame.size.width)/2;
- spin.center = CGPointMake(posX, 12);
+ CGFloat posX = (self.currentTableView.frame.size.width)/2;
+ spin.center = CGPointMake(posX, self.height/2);
} else {
- CGFloat posX = (_controller.view.frame.size.width-(spin.frame.size.width/2)-10);
- spin.center = CGPointMake(posX, 24);
+ CGFloat posX = (self.currentTableView.frame.size.width-(spin.frame.size.width/2)-16);
+ spin.center = CGPointMake(posX, self.height/2);
}
- spin.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin |
- UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[[cell contentView] addSubview:spin];
cell.textLabel.text = self.title;
- return cell;
+
}
- (void)handleAction:(UIViewController *)controller {
diff --git a/quickdialog/QRootBuilder.h b/Classes/Core/QRootBuilder.h
similarity index 100%
rename from quickdialog/QRootBuilder.h
rename to Classes/Core/QRootBuilder.h
diff --git a/Classes/Core/QRootBuilder.m b/Classes/Core/QRootBuilder.m
new file mode 100644
index 00000000..156000f0
--- /dev/null
+++ b/Classes/Core/QRootBuilder.m
@@ -0,0 +1,225 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
+#import "QRootBuilder.h"
+
+NSDictionary *QRootBuilderStringToTypeConversionDict;
+
+@interface QRootBuilder ()
+- (void)buildSectionWithObject:(id)obj forRoot:(QRootElement *)root;
+
+- (void)initializeMappings;
+
+@end
+
+@implementation QRootBuilder
+
++ (void)trySetProperty:(NSString *)propertyName onObject:(id)target withValue:(id)value localized:(BOOL)shouldLocalize{
+ shouldLocalize = shouldLocalize && ![propertyName isEqualToString:@"bind"] && ![propertyName isEqualToString:@"type"];
+ if ([value isKindOfClass:[NSString class]]) {
+ if (QRootBuilderStringToTypeConversionDict[propertyName] !=nil) {
+ [target setValue:[QRootBuilderStringToTypeConversionDict[propertyName] objectForKey:value] forKeyPath:propertyName];
+ } else {
+ [target setValue:shouldLocalize ? QTranslate(value) : value forKeyPath:propertyName];
+ }
+ } else if ([value isKindOfClass:[NSNumber class]]){
+ [target setValue:value forKeyPath:propertyName];
+ } else if ([value isKindOfClass:[NSArray class]]) {
+
+ NSUInteger i= 0;
+ NSMutableArray * itemsTranslated = [(NSArray *) value mutableCopy];
+
+ if (shouldLocalize){
+ for (id obj in (NSArray *)value){
+ if ([obj isKindOfClass:[NSString class]]){
+ @try {
+ itemsTranslated[i] = QTranslate(obj);
+ }
+ @catch (NSException * e) {
+ NSLog(@"Exception: %@", e);
+ }
+ }
+ i++;
+ }
+ }
+
+ [target setValue:itemsTranslated forKeyPath:propertyName];
+ } else if ([value isKindOfClass:[NSDictionary class]]){
+ [target setValue:value forKeyPath:propertyName];
+ } else if (value == [NSNull null]) {
+ [target setValue:nil forKeyPath:propertyName];
+ } else if ([value isKindOfClass:[NSObject class]]){
+ [target setValue:value forKeyPath:propertyName];
+ } else if (value == nil){
+ [target setValue:nil forKeyPath:propertyName];
+ }
+}
+
+- (void)updateObject:(id)element withPropertiesFrom:(NSDictionary *)dict {
+ for (NSString *key in dict.allKeys){
+ if ([key isEqualToString:@"type"] || [key isEqualToString:@"sections"]|| [key isEqualToString:@"elements"])
+ continue;
+
+ id value = [dict valueForKey:key];
+ [QRootBuilder trySetProperty:key onObject:element withValue:value localized:YES];
+ }
+}
+
+- (QElement *)buildElementWithObject:(id)obj {
+ QElement *element = [[NSClassFromString([obj valueForKey:[NSString stringWithFormat:@"type"]]) alloc] init];
+ if (element==nil) {
+ NSLog(@"Couldn't build element for type %@", [obj valueForKey:[NSString stringWithFormat:@"type"]]);
+ return nil;
+ }
+ [self updateObject:element withPropertiesFrom:obj];
+
+ if ([element isKindOfClass:[QRootElement class]] && [obj valueForKey:[NSString stringWithFormat:@"sections"]]!=nil) {
+ for (id section in (NSArray *)[obj valueForKey:[NSString stringWithFormat:@"sections"]]){
+ [self buildSectionWithObject:section forRoot:(QRootElement *) element];
+ }
+ }
+ return element;
+}
+
+- (QSection *)buildSectionWithObject:(NSDictionary *)obj {
+ QSection *sect = nil;
+ if ([obj valueForKey:[NSString stringWithFormat:@"type"]]!=nil){
+ sect = [[NSClassFromString([obj valueForKey:[NSString stringWithFormat:@"type"]]) alloc] init];
+ } else {
+ sect = [[QSection alloc] init];
+ }
+ [self updateObject:sect withPropertiesFrom:obj];
+ return sect;
+}
+
+- (void)buildSectionWithObject:(id)obj forRoot:(QRootElement *)root {
+ QSection *sect = nil;
+ if ([obj valueForKey:[NSString stringWithFormat:@"type"]]!=nil){
+ sect = [[NSClassFromString([obj valueForKey:[NSString stringWithFormat:@"type"]]) alloc] init];
+ } else {
+ sect = [[QSection alloc] init];
+ }
+ [self updateObject:sect withPropertiesFrom:obj];
+ [root addSection:sect];
+ for (id element in (NSArray *)[obj valueForKey:[NSString stringWithFormat:@"elements"]]){
+ QElement *elementNode = [self buildElementWithObject:element];
+ if (elementNode) {
+ [sect addElement:elementNode];
+ }
+ }
+}
+
+- (QRootElement *)buildWithObject:(id)obj {
+ if (QRootBuilderStringToTypeConversionDict ==nil)
+ [self initializeMappings];
+
+ QRootElement *root = [QRootElement new];
+ [self updateObject:root withPropertiesFrom:obj];
+ for (id section in (NSArray *)[obj valueForKey:[NSString stringWithFormat:@"sections"]]){
+ [self buildSectionWithObject:section forRoot:root];
+ }
+
+ return root;
+}
+
+- (void)initializeMappings {
+ QRootBuilderStringToTypeConversionDict = @{
+ @"presentationMode" : @{
+ @"Normal" : @(QPresentationModeNormal),
+ @"NavigationInPopover" : @(QPresentationModeNavigationInPopover),
+ @"ModalForm" : @(QPresentationModeModalForm),
+ @"Popover" : @(QPresentationModePopover),
+ @"ModalFullScreen" : @(QPresentationModeModalFullScreen),
+ @"ModalPage" : @(QPresentationModeModalPage)
+ },
+ @"autocapitalizationType" : @{
+ @"None" : @(UITextAutocapitalizationTypeNone),
+ @"Words" : @(UITextAutocapitalizationTypeWords),
+ @"Sentences" : @(UITextAutocapitalizationTypeSentences),
+ @"AllCharacters" : @(UITextAutocapitalizationTypeAllCharacters)
+ },
+ @"autocorrectionType" : @{
+ @"Default" : @(UITextAutocorrectionTypeDefault),
+ @"No" : @(UITextAutocorrectionTypeNo),
+ @"Yes" : @(UITextAutocorrectionTypeYes)},
+
+ @"cellStyle" : @{
+ @"Default" : @(UITableViewCellStyleDefault),
+ @"Subtitle" : @(UITableViewCellStyleSubtitle),
+ @"Value2" : @(UITableViewCellStyleValue2),
+ @"Value1" : @(UITableViewCellStyleValue1)},
+
+ @"keyboardType" : @{
+ @"Default" : @(UIKeyboardTypeDefault),
+ @"ASCIICapable" : @(UIKeyboardTypeASCIICapable),
+ @"NumbersAndPunctuation" : @(UIKeyboardTypeNumbersAndPunctuation),
+ @"URL" : @(UIKeyboardTypeURL),
+ @"NumberPad" : @(UIKeyboardTypeNumberPad),
+ @"PhonePad" : @(UIKeyboardTypePhonePad),
+ @"NamePhonePad" : @(UIKeyboardTypeNamePhonePad),
+ @"EmailAddress" : @(UIKeyboardTypeEmailAddress),
+ @"DecimalPad" : @(UIKeyboardTypeDecimalPad),
+ @"Twitter" : @(UIKeyboardTypeTwitter),
+ @"Alphabet" : @(UIKeyboardTypeAlphabet)},
+ @"keyboardAppearance" :@{
+ @"Default" : @(UIKeyboardAppearanceDefault),
+ @"Alert" : @(UIKeyboardAppearanceAlert)},
+
+ @"indicatorViewStyle" :@{
+ @"Gray" : @(UIActivityIndicatorViewStyleGray),
+ @"White" : @(UIActivityIndicatorViewStyleWhite),
+ @"WhiteLarge" : @(UIActivityIndicatorViewStyleWhiteLarge)},
+
+ @"accessoryType" : @{
+ @"DetailDisclosureButton" : @(UITableViewCellAccessoryDetailDisclosureButton),
+ @"Checkmark" : @(UITableViewCellAccessoryCheckmark),
+ @"DisclosureIndicator" : @(UITableViewCellAccessoryDisclosureIndicator),
+ @"None" : @(UITableViewCellAccessoryNone)},
+
+ @"mode" : @{
+ @"Date" : @(UIDatePickerModeDate),
+ @"Time" : @(UIDatePickerModeTime),
+ @"DateAndTime" : @(UIDatePickerModeDateAndTime)},
+
+ @"returnKeyType" : @{
+ @"Default" : @(UIReturnKeyDefault),
+ @"Go" : @(UIReturnKeyGo),
+ @"Google" : @(UIReturnKeyGoogle),
+ @"Join" : @(UIReturnKeyJoin),
+ @"Next" : @(UIReturnKeyNext),
+ @"Route" : @(UIReturnKeyRoute),
+ @"Search" : @(UIReturnKeySearch),
+ @"Send" : @(UIReturnKeySend),
+ @"Yahoo" : @(UIReturnKeyYahoo),
+ @"Done" : @(UIReturnKeyDone),
+ @"EmergencyCall" : @(UIReturnKeyEmergencyCall)},
+
+ @"labelingPolicy" : @{
+ @"trimTitle" : @(QLabelingPolicyTrimTitle),
+ @"trimValue" : @(QLabelingPolicyTrimValue)},
+
+ @"source" : @{
+ @"photoLibrary" : @(UIImagePickerControllerSourceTypePhotoLibrary),
+ @"camera" : @(UIImagePickerControllerSourceTypeCamera),
+ @"savedPhotosAlbum" : @(UIImagePickerControllerSourceTypeSavedPhotosAlbum)},
+
+ @"labelingPolicy" : @{
+ @"trimTitle" : @(QLabelingPolicyTrimTitle),
+ @"trimValue" : @(QLabelingPolicyTrimValue)}};
+
+}
+
+
+@end
diff --git a/quickdialog/QRootElement+JsonBuilder.h b/Classes/Core/QRootElement+JsonBuilder.h
similarity index 68%
rename from quickdialog/QRootElement+JsonBuilder.h
rename to Classes/Core/QRootElement+JsonBuilder.h
index d1d2434b..dbb6df57 100644
--- a/quickdialog/QRootElement+JsonBuilder.h
+++ b/Classes/Core/QRootElement+JsonBuilder.h
@@ -18,16 +18,15 @@
@interface QRootElement (JsonBuilder)
-- (QRootElement *)initWithJSONFile:(NSString *)json andData:(id)data;
+- (instancetype)initWithJSONFile:(NSString *)json andData:(id)data;
-- (QRootElement *)initWithJSON:(id)parsedJson andData:(id)data;
+- (instancetype)initWithJSON:(id)parsedJson andData:(id)data;
-- (QRootElement *)initWithJSONFile:(NSString *)jsonPath andDataJSONFile:(NSString *)dataPath;
+- (instancetype)initWithJSONFile:(NSString *)jsonPath andDataJSONFile:(NSString *)dataPath;
-+ (QRootElement *)rootForJSON:(NSString *)json;
++ (instancetype)rootForJSON:(NSString *)json;
-
-- (QRootElement *)initWithJSONFile:(NSString *)jsonPath;
+- (instancetype)initWithJSONFile:(NSString *)jsonPath;
+ (Class)JSONParserClass;
diff --git a/quickdialog/QRootElement+JsonBuilder.m b/Classes/Core/QRootElement+JsonBuilder.m
similarity index 86%
rename from quickdialog/QRootElement+JsonBuilder.m
rename to Classes/Core/QRootElement+JsonBuilder.m
index d22b0102..0bac08aa 100644
--- a/quickdialog/QRootElement+JsonBuilder.m
+++ b/Classes/Core/QRootElement+JsonBuilder.m
@@ -19,7 +19,7 @@
@implementation QRootElement (JsonBuilder)
-- (QRootElement *)initWithJSONFile:(NSString *)jsonPath {
+- (instancetype)initWithJSONFile:(NSString *)jsonPath {
self = [self initWithJSONFile:jsonPath andData:nil];
return self;
}
@@ -28,7 +28,7 @@ + (Class)JSONParserClass {
return objc_getClass("NSJSONSerialization");
}
-- (QRootElement *)initWithJSONFile:(NSString *)jsonPath andData:(id)data {
+- (instancetype)initWithJSONFile:(NSString *)jsonPath andData:(id)data {
Class JSONSerialization = [QRootElement JSONParserClass];
NSAssert(JSONSerialization != NULL, @"No JSON serializer available!");
@@ -46,7 +46,7 @@ - (QRootElement *)initWithJSONFile:(NSString *)jsonPath andData:(id)data {
return self;
}
-- (QRootElement *)initWithJSON:(id)jsonRoot andData:(id)data {
+- (instancetype)initWithJSON:(id)jsonRoot andData:(id)data {
self = [[QRootBuilder new] buildWithObject:jsonRoot];
if (data!=nil)
@@ -54,7 +54,7 @@ - (QRootElement *)initWithJSON:(id)jsonRoot andData:(id)data {
return self;
}
-- (QRootElement *)initWithJSONFile:(NSString *)jsonPath andDataJSONFile:(NSString *)dataPath {
+- (instancetype)initWithJSONFile:(NSString *)jsonPath andDataJSONFile:(NSString *)dataPath {
Class JSONSerialization = [QRootElement JSONParserClass];
NSAssert(JSONSerialization != NULL, @"No JSON serializer available!");
@@ -65,7 +65,7 @@ - (QRootElement *)initWithJSONFile:(NSString *)jsonPath andDataJSONFile:(NSStrin
return [self initWithJSONFile:jsonPath andData:data];
}
-+ (QRootElement *)rootForJSON:(NSString *)json {
++ (instancetype)rootForJSON:(NSString *)json {
QRootElement *root = [[self alloc] initWithJSONFile:json];
return root;
}
diff --git a/quickdialog/QRootElement.h b/Classes/Core/QRootElement.h
similarity index 99%
rename from quickdialog/QRootElement.h
rename to Classes/Core/QRootElement.h
index e2f2191a..c4ac6a53 100644
--- a/quickdialog/QRootElement.h
+++ b/Classes/Core/QRootElement.h
@@ -76,7 +76,6 @@ typedef enum {
- (QRootElement *)rootWithKey:(NSString *)string;
- (QEntryElement *)findElementToFocusOnBefore:(QElement *)previous;
-
- (QEntryElement *)findElementToFocusOnAfter:(QElement *)element;
- (void)handleEditingChanged;
diff --git a/quickdialog/QRootElement.m b/Classes/Core/QRootElement.m
similarity index 87%
rename from quickdialog/QRootElement.m
rename to Classes/Core/QRootElement.m
index 5f4a84b4..2b9e78c2 100644
--- a/quickdialog/QRootElement.m
+++ b/Classes/Core/QRootElement.m
@@ -18,23 +18,8 @@
#import "QEntryElement.h"
@implementation QRootElement {
-@private
- NSDictionary *_sectionTemplate;
- QPresentationMode _presentationMode;
}
-
-@synthesize title = _title;
-@synthesize sections = _sections;
-@synthesize grouped = _grouped;
-@synthesize controllerName = _controllerName;
-@synthesize sectionTemplate = _sectionTemplate;
-@synthesize emptyMessage = _emptyMessage;
-@synthesize onValueChanged = _onValueChanged;
-@synthesize presentationMode = _presentationMode;
-@synthesize preselectedElementIndex = _preselectedElementIndex;
-
-
- (instancetype)init {
self = [super init];
return self;
@@ -64,7 +49,7 @@ + (instancetype)rootForJSON:(NSString *)jsonFileName withObject:(id)object {
}
- (QSection *)getSectionForIndex:(NSInteger)index {
- return [_sections objectAtIndex:(NSUInteger) index];
+ return _sections[(NSUInteger) index];
}
- (NSInteger)numberOfSections {
@@ -103,12 +88,13 @@ - (NSUInteger)getVisibleIndexForSection: (QSection*)section
return NSNotFound;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ [super setCurrentCell:cell];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if (_title!= nil)
cell.textLabel.text = [NSString stringWithFormat:@"%@", _title];
- return cell;
}
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)path {
@@ -205,6 +191,7 @@ - (QEntryElement *)findElementToFocusOnBefore:(QElement *)previous {
if (e == previous) {
return previousElement;
}
+
else if ([e isKindOfClass:[QEntryElement class]] && [(QEntryElement *)e canTakeFocus]) {
previousElement = (QEntryElement *)e;
}
@@ -221,6 +208,7 @@ - (QEntryElement *)findElementToFocusOnAfter:(QElement *)element {
if (e == element) {
foundSelf = YES;
}
+
else if (foundSelf && [e isKindOfClass:[QEntryElement class]] && [(QEntryElement *)e canTakeFocus]) {
return (QEntryElement *) e;
}
diff --git a/quickdialog/QSection.h b/Classes/Core/QSection.h
similarity index 97%
rename from quickdialog/QSection.h
rename to Classes/Core/QSection.h
index d86f2a4a..25ed1e2b 100644
--- a/quickdialog/QSection.h
+++ b/Classes/Core/QSection.h
@@ -11,6 +11,8 @@
// ANY KIND, either express or implied. See the License for the specific language governing
// permissions and limitations under the License.
//
+
+
#import "QuickDialogTableView.h"
#import
#import "UIKit/UIKit.h"
@@ -60,7 +62,7 @@
@property(nonatomic, strong) id object;
-- (QSection *)initWithTitle:(NSString *)string;
+- (instancetype)initWithTitle:(NSString *)string;
- (void)addElement:(QElement *)element;
- (void)insertElement:(QElement *)element atIndex:(NSUInteger)index;
diff --git a/quickdialog/QSection.m b/Classes/Core/QSection.m
similarity index 79%
rename from quickdialog/QSection.m
rename to Classes/Core/QSection.m
index c1a95eba..af8b5137 100644
--- a/quickdialog/QSection.m
+++ b/Classes/Core/QSection.m
@@ -18,33 +18,9 @@
@implementation QSection {
@private
- id _object;
- NSString *_headerImage;
- NSString *_footerImage;
- NSDictionary *_elementTemplate;
- BOOL _canDeleteRows;
- NSMutableArray *_afterTemplateElements;
- NSMutableArray *_beforeTemplateElements;
-}
-@synthesize title;
-@synthesize footer;
-@synthesize elements;
-@synthesize rootElement = _rootElement;
-@synthesize key = _key;
-@synthesize bind = _bind;
-@synthesize headerView = _headerView;
-@synthesize footerView = _footerView;
-@synthesize entryPosition = _entryPosition;
-@synthesize headerImage = _headerImage;
-@synthesize footerImage = _footerImage;
-@synthesize elementTemplate = _elementTemplate;
-@synthesize canDeleteRows = _canDeleteRows;
-@synthesize afterTemplateElements = _afterTemplateElements;
-@synthesize beforeTemplateElements = _beforeTemplateElements;
-
-@synthesize hidden = _hidden;
+}
+
@dynamic visibleIndex;
-@synthesize object = _object;
- (QElement *)getVisibleElementForIndex:(NSInteger)index
@@ -101,7 +77,7 @@ - (void)setHeaderImage:(NSString *)imageName {
self.headerView.contentMode = UIViewContentModeCenter;
}
-- (QSection *)initWithTitle:(NSString *)sectionTitle {
+- (instancetype)initWithTitle:(NSString *)sectionTitle {
self = [super init];
if (self) {
self.title = sectionTitle;
@@ -138,7 +114,7 @@ - (NSUInteger)indexOfElement:(QElement *)element
}
- (void)fetchValueIntoObject:(id)obj {
- for (QElement *el in elements){
+ for (QElement *el in self.elements){
[el fetchValueIntoObject:obj];
}
}
diff --git a/quickdialog/QSortingSection.h b/Classes/Core/QSortingSection.h
similarity index 100%
rename from quickdialog/QSortingSection.h
rename to Classes/Core/QSortingSection.h
diff --git a/quickdialog/QSortingSection.m b/Classes/Core/QSortingSection.m
similarity index 89%
rename from quickdialog/QSortingSection.m
rename to Classes/Core/QSortingSection.m
index a2333d3b..66940c1c 100644
--- a/quickdialog/QSortingSection.m
+++ b/Classes/Core/QSortingSection.m
@@ -21,12 +21,7 @@ @implementation QSortingSection {
}
-
-@synthesize sortingEnabled = _sortingEnabled;
-@synthesize canDeleteRows = _canDeleteRows;
-
-
-- (QSortingSection *)init {
+- (instancetype)init {
self = [super init];
self.sortingEnabled = YES;
return self;
@@ -48,7 +43,7 @@ - (void)fetchValueIntoObject:(id)obj {
}
- (void)moveElementFromRow:(NSUInteger)from toRow:(NSUInteger)to {
- [self.elements moveObjectFromIndex:from toIndex:to];
+ [self.elements qd_moveObjectFromIndex:from toIndex:to];
}
- (BOOL)removeElementForRow:(NSInteger)index {
diff --git a/quickdialog/QTableViewCell.h b/Classes/Core/QTableViewCell.h
similarity index 82%
rename from quickdialog/QTableViewCell.h
rename to Classes/Core/QTableViewCell.h
index 4191842b..ea376122 100644
--- a/quickdialog/QTableViewCell.h
+++ b/Classes/Core/QTableViewCell.h
@@ -22,16 +22,13 @@ typedef enum {
QLabelingPolicyTrimTitle
} QLabelingPolicy;
-static const int QCellMarginDouble = 16;
-static const int QCellMargin = 8;
-
@interface QTableViewCell : UITableViewCell
-- (QTableViewCell *)initWithReuseIdentifier:(NSString *)string;
-
-- (void)layoutSubviewsInsideBounds:(CGRect)bounds;
+@property (nonatomic, weak) QElement *currentElement;
@property (nonatomic) QLabelingPolicy labelingPolicy;
+- (instancetype)initWithReuseIdentifier:(NSString *)string;
+
- (void)applyAppearanceForElement:(QElement *)element;
@end
diff --git a/quickdialog/QTableViewCell.m b/Classes/Core/QTableViewCell.m
similarity index 52%
rename from quickdialog/QTableViewCell.m
rename to Classes/Core/QTableViewCell.m
index ef4be323..a51cd2f0 100644
--- a/quickdialog/QTableViewCell.m
+++ b/Classes/Core/QTableViewCell.m
@@ -13,14 +13,17 @@
//
#import "QTableViewCell.h"
-@implementation QTableViewCell
+#import "QAppearance.h"
+#import "QElement+Appearance.h"
-static const int kCellMinimumLabelWidth = 80;
+static const int QCellMarginDouble = 16;
+static const int QCellMargin = 8;
+static const int QCellMinimumLabelWidth = 80;
+@implementation QTableViewCell
-@synthesize labelingPolicy = _labelingPolicy;
-- (QTableViewCell *)initWithReuseIdentifier:(NSString *)string {
+- (instancetype)initWithReuseIdentifier:(NSString *)string {
self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:string];
return self;
}
@@ -29,76 +32,88 @@ - (void)layoutSubviews
{
[super layoutSubviews];
- [self layoutSubviewsInsideBounds:self.contentView.bounds];
-
-}
-
-- (void)layoutSubviewsInsideBounds:(CGRect)bounds
-{
- CGSize sizeWithMargin = bounds.size;
+ CGSize sizeWithMargin = self.bounds.size;
if (self.imageView.image!=nil){
sizeWithMargin = CGSizeMake(sizeWithMargin.width - self.imageView.image.size.width - QCellMarginDouble, sizeWithMargin.height);
}
+ self.detailTextLabel.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];
+ self.textLabel.backgroundColor = [[UIColor yellowColor] colorWithAlphaComponent:0.5];
+
if (_labelingPolicy == QLabelingPolicyTrimTitle)
{
if (self.textLabel.text!=nil){
- sizeWithMargin = CGSizeMake(sizeWithMargin.width-kCellMinimumLabelWidth, sizeWithMargin.height- QCellMarginDouble);
+ sizeWithMargin = CGSizeMake(sizeWithMargin.width - QCellMinimumLabelWidth, sizeWithMargin.height- QCellMarginDouble);
}
- CGSize valueSize = CGSizeZero;
+ CGSize detailsSize = CGSizeZero;
if (self.detailTextLabel.text!=nil) {
- valueSize = [self.detailTextLabel.text sizeWithFont:self.detailTextLabel.font constrainedToSize:sizeWithMargin];
+ detailsSize = [self.detailTextLabel.text boundingRectWithSize:sizeWithMargin options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.detailTextLabel.font} context:nil].size;
}
+ self.detailTextLabel.frame = CGRectMake(
+ self.bounds.size.width - detailsSize.width - QCellMargin,
+ QCellMargin,
+ detailsSize.width,
+ self.bounds.size.height- QCellMarginDouble);
+
self.textLabel.frame = CGRectMake(
self.textLabel.frame.origin.x,
QCellMargin,
- bounds.size.width - valueSize.width - QCellMarginDouble - QCellMarginDouble,
- bounds.size.height- QCellMarginDouble);
+ sizeWithMargin.width - detailsSize.width + QCellMinimumLabelWidth - QCellMarginDouble - QCellMarginDouble,
+ self.bounds.size.height- QCellMarginDouble);
- self.detailTextLabel.frame = CGRectMake(
- bounds.size.width - valueSize.width - QCellMargin,
- QCellMargin,
- valueSize.width,
- bounds.size.height- QCellMarginDouble);
} else {
if (self.detailTextLabel.text!=nil){
- sizeWithMargin = CGSizeMake(sizeWithMargin.width-kCellMinimumLabelWidth, sizeWithMargin.height- QCellMarginDouble);
+ sizeWithMargin = CGSizeMake(sizeWithMargin.width- QCellMinimumLabelWidth, sizeWithMargin.height- QCellMarginDouble);
}
- CGSize valueSize = CGSizeZero;
+ CGSize textWidth = CGSizeZero;
if (!self.detailTextLabel.text) {
- valueSize = CGSizeMake(sizeWithMargin.width - QCellMarginDouble - QCellMargin, sizeWithMargin.height);
+ textWidth = CGSizeMake(sizeWithMargin.width - QCellMarginDouble - QCellMargin, sizeWithMargin.height);
} else if (self.textLabel.text!=nil) {
- valueSize = [self.textLabel.text sizeWithFont:self.textLabel.font constrainedToSize:sizeWithMargin];
+ textWidth = [self.textLabel.text boundingRectWithSize:sizeWithMargin options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.textLabel.font} context:nil].size;
}
self.textLabel.frame = CGRectMake(
self.textLabel.frame.origin.x,
QCellMargin,
- valueSize.width,
- bounds.size.height- QCellMarginDouble);
-
- CGFloat detailsWidth = bounds.size.width - QCellMarginDouble;
- if (valueSize.width>0)
- detailsWidth = detailsWidth - valueSize.width - QCellMarginDouble;
+ textWidth.width,
+ self.bounds.size.height- QCellMarginDouble);
+ CGFloat detailsWidth = self.bounds.size.width - self.textLabel.frame.origin.x - textWidth.width - QCellMargin;
self.detailTextLabel.frame = CGRectMake(
- bounds.size.width - detailsWidth ,
+ self.bounds.size.width - detailsWidth,
QCellMargin,
- detailsWidth - (self.accessoryView ==nil ? 0 : QCellMarginDouble) - (self.accessoryType !=UITableViewCellAccessoryNone ? 0 : QCellMarginDouble),
- bounds.size.height- QCellMarginDouble);
+ detailsWidth - (self.accessoryView ==nil ? 0 : QCellMargin) - (self.accessoryType !=UITableViewCellAccessoryNone ? 0 : QCellMargin),
+ self.bounds.size.height- QCellMarginDouble);
}
}
+- (void)prepareForReuse
+{
+ [super prepareForReuse];
+ self.currentElement.currentCell = nil;
+ self.currentElement = nil;
+
+ self.textLabel.text = nil;
+ self.detailTextLabel.text = nil;
+ self.imageView.image = nil;
+ self.selectionStyle = UITableViewCellSelectionStyleNone;
+ self.showsReorderControl = YES;
+ self.accessoryView = nil;
+ self.labelingPolicy = _labelingPolicy;
+
+
+}
+
- (void)applyAppearanceForElement:(QElement *)element {
QAppearance *appearance = element.appearance;
self.textLabel.textColor = element.enabled ? appearance.labelColorEnabled : appearance.labelColorDisabled;
- self.textLabel.font = appearance.labelFont;
+ self.textLabel.font = appearance.titleFont;
self.textLabel.textAlignment = appearance.labelAlignment;
self.textLabel.numberOfLines = 0;
self.textLabel.backgroundColor = [UIColor clearColor];
@@ -113,4 +128,5 @@ - (void)applyAppearanceForElement:(QElement *)element {
self.selectedBackgroundView = element.appearance.selectedBackgroundView;
}
+
@end
diff --git a/quickdialog/QTextElement.h b/Classes/Core/QTextElement.h
similarity index 91%
rename from quickdialog/QTextElement.h
rename to Classes/Core/QTextElement.h
index f59699ae..1295d7fa 100644
--- a/quickdialog/QTextElement.h
+++ b/Classes/Core/QTextElement.h
@@ -32,5 +32,7 @@
@property(nonatomic, retain) UIColor *color;
@property(nonatomic, strong) UIImage *image;
-- (QTextElement *)initWithText:(NSString *)string;
+@property(nonatomic) CGFloat verticalMargin;
+
+- (instancetype)initWithText:(NSString *)string;
@end
diff --git a/quickdialog/QTextElement.m b/Classes/Core/QTextElement.m
similarity index 62%
rename from quickdialog/QTextElement.m
rename to Classes/Core/QTextElement.m
index c33f9a48..074fa15f 100644
--- a/quickdialog/QTextElement.m
+++ b/Classes/Core/QTextElement.m
@@ -12,32 +12,41 @@
// permissions and limitations under the License.
//
-#import
#import "QTextElement.h"
+#import "QElement+Appearance.h"
+#import "QAppearance.h"
@implementation QTextElement
-@synthesize text = _text;
-@synthesize color = _color;
-
-
-- (QTextElement *)init {
+- (instancetype)init {
self = [super init];
- _color = [UIColor blackColor];
+ if (self)
+ {
+ [self internalInit:nil];
+ }
return self;
}
-- (QTextElement *)initWithText:(NSString *)text {
+- (instancetype)initWithText:(NSString *)text {
self = [self init];
- _text = text;
+ if (self)
+ {
+ [self internalInit:text];
+ }
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"QuickformText"]];
- if (cell == nil){
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"QuickformText"];
- }
+- (void)internalInit:(NSString *)text
+{
+ self.text = text;
+ self.verticalMargin = 12;
+ self.color = [UIColor blackColor];
+}
+
+
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.detailTextLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.detailTextLabel.numberOfLines = 0;
@@ -49,8 +58,6 @@ - (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView contr
cell.detailTextLabel.text = _text;
cell.imageView.image = _image;
-
- return cell;
}
@@ -59,11 +66,16 @@ - (CGFloat)getRowHeightForTableView:(QuickDialogTableView *)tableView {
if (_text.length == 0){
return [super getRowHeightForTableView:tableView];
}
- CGSize constraint = CGSizeMake(tableView.frame.size.width-(tableView.root.grouped ? 40.f : 20.f), 20000);
- CGSize size= [_text sizeWithFont:self.appearance.valueFont constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
- CGFloat predictedHeight = size.height + 40.0f;
+ CGSize constraint = CGSizeMake(tableView.frame.size.width-(tableView.root.grouped ? 40.f : 20.f), CGFLOAT_MAX);
+ CGSize size = [self.text boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.appearance.valueFont} context:nil].size;
+
+ CGFloat predictedHeight = size.height + (self.verticalMargin * 2);
if (self.title!=nil)
- predictedHeight+=30;
+ {
+ CGRect labelSize = [self.title boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.appearance.titleFont} context:nil];
+ predictedHeight += labelSize.size.height;
+ }
+
return (_height >= predictedHeight) ? _height : predictedHeight;
}
diff --git a/quickdialog/QTextField.h b/Classes/Core/QTextField.h
similarity index 100%
rename from quickdialog/QTextField.h
rename to Classes/Core/QTextField.h
diff --git a/quickdialog/QTextField.m b/Classes/Core/QTextField.m
similarity index 76%
rename from quickdialog/QTextField.m
rename to Classes/Core/QTextField.m
index c8e95ec3..92c1b2ad 100644
--- a/quickdialog/QTextField.m
+++ b/Classes/Core/QTextField.m
@@ -12,19 +12,20 @@
// ANY KIND, either express or implied. See the License for the specific language governing
// permissions and limitations under the License.
//
+
+
#import "QTextField.h"
@implementation QTextField
-@synthesize prefix = _prefix;
-@synthesize suffix = _suffix;
-
- (void)drawTextInRect:(CGRect)rect
{
if (_prefix || _suffix) {
NSString *textWithSuffix = [NSString stringWithFormat:@"%@%@%@", _prefix ? _prefix : @"", self.text, _suffix ? _suffix : @""];
- CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), self.textColor.CGColor);
- [textWithSuffix drawInRect:rect withFont:self.font lineBreakMode:NSLineBreakByTruncatingTail alignment:self.textAlignment];
+
+ NSDictionary *dictionary = @{ NSFontAttributeName: self.font,
+ NSForegroundColorAttributeName: self.textColor};
+ [textWithSuffix drawInRect:rect withAttributes:dictionary];
} else {
[super drawTextInRect:rect];
}
diff --git a/quickdialog/QuickDialog.h b/Classes/Core/QuickDialog.h
similarity index 58%
rename from quickdialog/QuickDialog.h
rename to Classes/Core/QuickDialog.h
index b6c6898f..a198bb9a 100644
--- a/quickdialog/QuickDialog.h
+++ b/Classes/Core/QuickDialog.h
@@ -13,56 +13,32 @@
//
+#import "QAppearance.h"
#import "QuickDialogController.h"
#import "QuickDialogController+Navigation.h"
-#import "QuickDialogController+Loading.h"
#import "QuickDialogController+Helpers.h"
-#import "QuickDialogDelegate.h"
-#import "NSMutableArray+MoveObject.h"
#import "QuickDialogTableView.h"
#import "QuickDialogTableDelegate.h"
-
-#import "QElement.h"
-#import "QAppearance.h"
+#import "QuickDialogEntryElementDelegate.h"
+#import "QTextField.h"
#import "QAppearance.h"
#import "QFlatAppearance.h"
-#import "QElement+Appearance.h"
-#import "QTableViewCell.h"
-#import "QRootElement+JsonBuilder.h"
-#import "QLoadingElement.h"
+
+#import "QElement.h"
#import "QRootElement.h"
-#import "QLabelElement.h"
-#import "QBadgeElement.h"
-#import "QBooleanElement.h"
-#import "QButtonElement.h"
-#import "QuickDialogEntryElementDelegate.h"
#import "QEntryElement.h"
+#import "QElement+Appearance.h"
+#import "QLoadingElement.h"
+
+#import "QTableViewCell.h"
#import "QEntryTableViewCell.h"
-#import "QDateTimeInlineElement.h"
-#import "QCountdownElement.h"
-#import "QFloatElement.h"
-#import "QRadioElement.h"
-#import "QRadioItemElement.h"
-#import "QSelectItemElement.h"
-#import "QTextElement.h"
-#import "QDecimalElement.h"
-#import "QSortingSection.h"
-#import "QDateTimeElement.h"
-#import "QBadgeLabel.h"
-#import "QSegmentedElement.h"
-#import "QMultilineTextViewController.h"
-#import "QMultilineElement.h"
-#import "QImageElement.h"
-#import "QProgressElement.h"
-#import "QProgressElement.h"
-#import "QuickDialogController+Loading.h"
-#import "QAutoEntryElement.h"
-#import "QAutoEntryTableViewCell.h"
-#import "QDateEntryTableViewCell.h"
#import "QRootBuilder.h"
+#import "QRootElement+JsonBuilder.h"
+#import "QDynamicDataSection.h"
+
+
-#import "QTextField.h"
diff --git a/quickdialog/QuickDialogController+Animations.h b/Classes/Core/QuickDialogController+Animations.h
similarity index 62%
rename from quickdialog/QuickDialogController+Animations.h
rename to Classes/Core/QuickDialogController+Animations.h
index 4fdc4ce5..778d6974 100644
--- a/quickdialog/QuickDialogController+Animations.h
+++ b/Classes/Core/QuickDialogController+Animations.h
@@ -1,4 +1,18 @@
-#import
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+//
+
#import "QuickDialogController.h"
@interface QuickDialogController (Animations)
diff --git a/quickdialog/QuickDialogController+Animations.m b/Classes/Core/QuickDialogController+Animations.m
similarity index 84%
rename from quickdialog/QuickDialogController+Animations.m
rename to Classes/Core/QuickDialogController+Animations.m
index 49cdbb5c..f350e31f 100644
--- a/quickdialog/QuickDialogController+Animations.m
+++ b/Classes/Core/QuickDialogController+Animations.m
@@ -1,4 +1,20 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
#import "QuickDialogController+Animations.h"
+#import "QElement+Appearance.h"
+#import "QSection.h"
@implementation QuickDialogController (Animations)
diff --git a/quickdialog/QuickDialogController+Loading.h b/Classes/Core/QuickDialogController+Helpers.h
similarity index 68%
rename from quickdialog/QuickDialogController+Loading.h
rename to Classes/Core/QuickDialogController+Helpers.h
index fe66fe59..e1170b28 100644
--- a/quickdialog/QuickDialogController+Loading.h
+++ b/Classes/Core/QuickDialogController+Helpers.h
@@ -1,22 +1,22 @@
-//
+//
// Copyright 2011 ESCOZ Inc - http://escoz.com
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
-// file except in compliance with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
// Unless required by applicable law or agreed to in writing, software distributed under
-// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
// ANY KIND, either express or implied. See the License for the specific language governing
// permissions and limitations under the License.
//
+//
+//
#import "QuickDialogController.h"
-@interface QuickDialogController (Loading)
-
--(void)loading:(BOOL)value;
-
+NSString *QTranslate(NSString *value);
+@interface QuickDialogController (Helpers)
@end
diff --git a/quickdialog/QuickDialogController+Helpers.m b/Classes/Core/QuickDialogController+Helpers.m
similarity index 100%
rename from quickdialog/QuickDialogController+Helpers.m
rename to Classes/Core/QuickDialogController+Helpers.m
diff --git a/quickdialog/QuickDialogController+Navigation.h b/Classes/Core/QuickDialogController+Navigation.h
similarity index 53%
rename from quickdialog/QuickDialogController+Navigation.h
rename to Classes/Core/QuickDialogController+Navigation.h
index 64ffcb23..74fd5cc7 100644
--- a/quickdialog/QuickDialogController+Navigation.h
+++ b/Classes/Core/QuickDialogController+Navigation.h
@@ -1,3 +1,18 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
#import
#import "QuickDialog.h"
#import "QRootElement.h"
diff --git a/quickdialog/QuickDialogController+Navigation.m b/Classes/Core/QuickDialogController+Navigation.m
similarity index 87%
rename from quickdialog/QuickDialogController+Navigation.m
rename to Classes/Core/QuickDialogController+Navigation.m
index 9cdaa52d..0e62b1e1 100644
--- a/quickdialog/QuickDialogController+Navigation.m
+++ b/Classes/Core/QuickDialogController+Navigation.m
@@ -1,3 +1,18 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+
#import "QuickDialogController+Navigation.h"
#import "QRootBuilder.h"
#import "QuickDialog.h"
@@ -24,7 +39,7 @@ - (void)displayViewController:(UIViewController *)newController withPresentation
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController :newController];
newController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStylePlain target:self action:@selector(dismissModalViewController)];
navigation.modalPresentationStyle = UIModalPresentationFormSheet;
- [self presentModalViewController:navigation animated:YES];
+ [self presentViewController:navigation animated:YES completion:nil];
} else if (mode == QPresentationModeModalFullScreen) {
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController :newController];
newController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStylePlain target:self action:@selector(dismissModalViewController)];
@@ -87,7 +102,7 @@ - (void)popToPreviousRootElementOnMainThread {
[self.popoverBeingPresented.delegate popoverControllerDidDismissPopover:self.popoverBeingPresented];
}
}
- else if (self.navigationController!=nil && [self.navigationController.viewControllers objectAtIndex:0]!=self){
+ else if (self.navigationController!=nil && self.navigationController.viewControllers[0] !=self){
[self.navigationController popViewControllerAnimated:YES];
} else if (self.presentingViewController!=nil)
[self dismissViewControllerAnimated:YES completion:nil];
diff --git a/quickdialog/QuickDialogController.h b/Classes/Core/QuickDialogController.h
similarity index 91%
rename from quickdialog/QuickDialogController.h
rename to Classes/Core/QuickDialogController.h
index a30f9da8..4383929b 100644
--- a/quickdialog/QuickDialogController.h
+++ b/Classes/Core/QuickDialogController.h
@@ -45,11 +45,11 @@
- (void)loadView;
-- (QuickDialogController *)initWithRoot:(QRootElement *)rootElement;
+- (instancetype)initWithRoot:(QRootElement *)rootElement;
-- (QuickDialogController *)controllerForRoot:(QRootElement *)root;
+- (instancetype)controllerForRoot:(QRootElement *)root;
-+ (QuickDialogController *)controllerForRoot:(QRootElement *)root;
++ (instancetype)controllerForRoot:(QRootElement *)root;
/**
Called before a cell is removed from the tableView. Return YES and QuickDialog will delete the cell, return NO if you want to delete the cell or reload the tableView yourself.
diff --git a/quickdialog/QuickDialogController.m b/Classes/Core/QuickDialogController.m
similarity index 87%
rename from quickdialog/QuickDialogController.m
rename to Classes/Core/QuickDialogController.m
index 307cc017..dcbc00ae 100644
--- a/quickdialog/QuickDialogController.m
+++ b/Classes/Core/QuickDialogController.m
@@ -14,28 +14,21 @@
#import "QuickDialogController.h"
#import "QRootElement.h"
+#import "QEntryElement.h"
+
@interface QuickDialogController ()
+@property(nonatomic) BOOL viewOnScreen;
+@property(nonatomic) BOOL keyboardVisible;
+
+ (Class)controllerClassForRoot:(QRootElement *)root;
@end
@implementation QuickDialogController {
- BOOL _keyboardVisible;
- BOOL _viewOnScreen;
- BOOL _resizeWhenKeyboardPresented;
- UIPopoverController *_popoverForChildRoot;
}
-@synthesize root = _root;
-@synthesize willDisappearCallback = _willDisappearCallback;
-@synthesize quickDialogTableView = _quickDialogTableView;
-@synthesize resizeWhenKeyboardPresented = _resizeWhenKeyboardPresented;
-@synthesize popoverBeingPresented = _popoverBeingPresented;
-@synthesize popoverForChildRoot = _popoverForChildRoot;
-
-
+ (QuickDialogController *)buildControllerWithClass:(Class)controllerClass root:(QRootElement *)root {
controllerClass = controllerClass==nil? [QuickDialogController class] : controllerClass;
return [((QuickDialogController *)[controllerClass alloc]) initWithRoot:root];
@@ -81,7 +74,7 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interface
return YES;
}
-- (id)initWithCoder:(NSCoder *)aDecoder
+- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self) {
@@ -90,7 +83,7 @@ - (id)initWithCoder:(NSCoder *)aDecoder
return self;
}
-- (QuickDialogController *)initWithRoot:(QRootElement *)rootElement {
+- (instancetype)initWithRoot:(QRootElement *)rootElement {
self = [super init];
if (self) {
self.root = rootElement;
@@ -112,7 +105,7 @@ - (void)setRoot:(QRootElement *)root {
}
- (void)viewWillAppear:(BOOL)animated {
- _viewOnScreen = YES;
+ self.viewOnScreen = YES;
[self.quickDialogTableView deselectRows];
[super viewWillAppear:animated];
if (_root!=nil) {
@@ -167,17 +160,17 @@ - (void) resizeForKeyboard:(NSNotification*)aNotification {
BOOL up = aNotification.name == UIKeyboardWillShowNotification;
- if (_keyboardVisible == up)
+ if (self.keyboardVisible == up)
return;
- _keyboardVisible = up;
+ self.keyboardVisible = up;
NSDictionary* userInfo = [aNotification userInfo];
NSTimeInterval animationDuration;
UIViewAnimationOptions animationCurve;
CGRect keyboardEndFrame;
- [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
- [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
- [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
+ [userInfo[UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
+ [userInfo[UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
+ [userInfo[UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
[UIView animateWithDuration:animationDuration delay:0 options:animationCurve
animations:^{
diff --git a/quickdialog/QuickDialogDataSource.h b/Classes/Core/QuickDialogDataSource.h
similarity index 100%
rename from quickdialog/QuickDialogDataSource.h
rename to Classes/Core/QuickDialogDataSource.h
diff --git a/quickdialog/QuickDialogDataSource.m b/Classes/Core/QuickDialogDataSource.m
similarity index 90%
rename from quickdialog/QuickDialogDataSource.m
rename to Classes/Core/QuickDialogDataSource.m
index 331ae1d7..38d268c1 100644
--- a/quickdialog/QuickDialogDataSource.m
+++ b/Classes/Core/QuickDialogDataSource.m
@@ -33,7 +33,7 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
QSection *section = [_tableView.root getVisibleSectionForIndex:indexPath.section];
QElement *element = [section getVisibleElementForIndex:indexPath.row];
- element.controller = _tableView.controller;
+ element.currentController = _tableView.controller;
UITableViewCell *cell = [element getCellForTableView:(QuickDialogTableView *) tableView controller:_tableView.controller];
cell.accessibilityLabel = element.accessibilityLabel;
cell.accessibilityIdentifier = element.accessibilityIdentifier;
@@ -63,17 +63,17 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEd
QElement *element;
if (section.elements.count >= indexPath.row) {
- element = section.elements[indexPath.row];
+ element = section.elements[(NSUInteger) indexPath.row];
}
- if ([element.controller respondsToSelector:@selector(shouldDeleteElement:)]) {
- if (![(QuickDialogController *)element.controller shouldDeleteElement:element]) {
+ if ([element.currentController respondsToSelector:@selector(shouldDeleteElement:)]) {
+ if (![element.currentController shouldDeleteElement:element]) {
return;
};
}
if ([section removeElementForRow:indexPath.row]){
- [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
+ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
diff --git a/QuickDialogDelegate.h b/Classes/Core/QuickDialogDelegate.h
similarity index 100%
rename from QuickDialogDelegate.h
rename to Classes/Core/QuickDialogDelegate.h
diff --git a/quickdialog/QuickDialogEntryElementDelegate.h b/Classes/Core/QuickDialogEntryElementDelegate.h
similarity index 100%
rename from quickdialog/QuickDialogEntryElementDelegate.h
rename to Classes/Core/QuickDialogEntryElementDelegate.h
diff --git a/quickdialog/QuickDialogTableDelegate.h b/Classes/Core/QuickDialogTableDelegate.h
similarity index 100%
rename from quickdialog/QuickDialogTableDelegate.h
rename to Classes/Core/QuickDialogTableDelegate.h
diff --git a/quickdialog/QuickDialogTableDelegate.m b/Classes/Core/QuickDialogTableDelegate.m
similarity index 98%
rename from quickdialog/QuickDialogTableDelegate.m
rename to Classes/Core/QuickDialogTableDelegate.m
index 1f280b19..7dbe1601 100644
--- a/quickdialog/QuickDialogTableDelegate.m
+++ b/Classes/Core/QuickDialogTableDelegate.m
@@ -15,6 +15,9 @@
#import
#import "QuickDialogTableDelegate.h"
#import "QuickDialog.h"
+#import "QSortingSection.h"
+#import "QuickDialogDelegate.h"
+
@implementation QuickDialogTableDelegate
diff --git a/quickdialog/QuickDialogTableView.h b/Classes/Core/QuickDialogTableView.h
similarity index 94%
rename from quickdialog/QuickDialogTableView.h
rename to Classes/Core/QuickDialogTableView.h
index 99cb9c68..57143841 100644
--- a/quickdialog/QuickDialogTableView.h
+++ b/Classes/Core/QuickDialogTableView.h
@@ -32,15 +32,14 @@
@property(nonatomic, strong) id quickDialogTableDelegate;
@property(nonatomic, strong) id quickDialogDataSource;
-@property(nonatomic) BOOL deselectRowWhenViewAppears;
-
-- (QuickDialogTableView *)initWithController:(QuickDialogController *)controller;
-- (void)deselectRows;
+- (instancetype)initWithController:(QuickDialogController *)controller;
- (UITableViewCell *)cellForElement:(QElement *)element;
- (void)reloadCellForElements:(QElement *)element, ... NS_REQUIRES_NIL_TERMINATION;
+@property(nonatomic) BOOL deselectRowWhenViewAppears;
- (void)reloadRowHeights;
+- (void)deselectRows;
- (void)endEditingOnVisibleCells;
@end
diff --git a/quickdialog/QuickDialogTableView.m b/Classes/Core/QuickDialogTableView.m
similarity index 90%
rename from quickdialog/QuickDialogTableView.m
rename to Classes/Core/QuickDialogTableView.m
index 8c9c782f..724bab27 100644
--- a/quickdialog/QuickDialogTableView.m
+++ b/Classes/Core/QuickDialogTableView.m
@@ -14,24 +14,19 @@
#import "QuickDialogTableView.h"
#import "QuickDialog.h"
-#import "QuickDialogDelegate.h"
@interface QuickDialogTableView ()
@property(weak, nonatomic, readwrite) QuickDialogController *controller;
@end
@implementation QuickDialogTableView {
- BOOL _deselectRowWhenViewAppears;
}
-@synthesize root = _root;
-@synthesize deselectRowWhenViewAppears = _deselectRowWhenViewAppears;
-
- (QuickDialogController *)controller {
return _controller;
}
-- (QuickDialogTableView *)initWithController:(QuickDialogController *)controller {
+- (instancetype)initWithController:(QuickDialogController *)controller {
self = [super initWithFrame:CGRectMake(0, 0, 0, 0) style:controller.root.grouped ? UITableViewStyleGrouped : UITableViewStylePlain];
if (self!=nil){
self.controller = controller;
@@ -89,10 +84,10 @@ - (void)applyAppearanceForRoot:(QRootElement *)element {
- (NSIndexPath *)indexForElement:(QElement *)element {
for (int i=0; i< [_root.sections count]; i++){
- QSection * currSection = [_root.sections objectAtIndex:(NSUInteger) i];
+ QSection * currSection = _root.sections[(NSUInteger) i];
for (int j=0; j< [currSection.elements count]; j++){
- QElement *currElement = [currSection.elements objectAtIndex:(NSUInteger) j];
+ QElement *currElement = currSection.elements[(NSUInteger) j];
if (currElement == element){
return [NSIndexPath indexPathForRow:j inSection:i];
}
@@ -122,7 +117,7 @@ - (void)deselectRows
NSArray *selected = nil;
if ([self indexPathForSelectedRow]!=nil && _deselectRowWhenViewAppears){
NSIndexPath *selectedRowIndex = [self indexPathForSelectedRow];
- selected = [NSArray arrayWithObject:selectedRowIndex];
+ selected = @[selectedRowIndex];
[self reloadRowsAtIndexPaths:selected withRowAnimation:UITableViewRowAnimationNone];
[self selectRowAtIndexPath:selectedRowIndex animated:NO scrollPosition:UITableViewScrollPositionNone];
[self deselectRowAtIndexPath:selectedRowIndex animated:YES];
diff --git a/extras/QColorPickerElement.h b/Classes/Extras/QColorPickerElement.h
similarity index 58%
rename from extras/QColorPickerElement.h
rename to Classes/Extras/QColorPickerElement.h
index fe6616c4..ef3e492d 100644
--- a/extras/QColorPickerElement.h
+++ b/Classes/Extras/QColorPickerElement.h
@@ -6,10 +6,12 @@
// Copyright (c) 2012 Quickfire Software. All rights reserved.
//
-#import "QLabelElement.h"
+#import
+#import "../Forms/QRadioElement.h"
+#import "../Forms/QRadioItemElement.h"
@interface QColorPickerElement : QRadioElement
-- (void)setSelectedColor:(id)o;
+- (void)setSelectedColor:(id)color;
@end
diff --git a/extras/QColorPickerElement.m b/Classes/Extras/QColorPickerElement.m
similarity index 78%
rename from extras/QColorPickerElement.m
rename to Classes/Extras/QColorPickerElement.m
index 41d892bd..cf746508 100644
--- a/extras/QColorPickerElement.m
+++ b/Classes/Extras/QColorPickerElement.m
@@ -14,7 +14,7 @@ @implementation QColorPickerElement {
}
-- (QColorPickerElement *)init {
+- (instancetype)init {
self = [super init];
if (self) {
self.items = @[
@@ -48,12 +48,12 @@ - (void)updateCell:(QEntryTableViewCell *)cell selectedValue:(id)selectedValue {
}
- (UIImage *)getImageFromItem:(NSArray *)selectedValue {
- id color = [selectedValue objectAtIndex:1];
+ id color = selectedValue[1];
if ([color isKindOfClass:[UIColor class]])
- return [color imageByDrawingCircleOfColor];
+ return [color qd_imageByDrawingCircleOfColor];
if ([color isKindOfClass:[NSString class]])
- return [[QColorPickerElement colorFromHexString:color] imageByDrawingCircleOfColor];
- return [[UIColor blackColor] imageByDrawingCircleOfColor];
+ return [[QColorPickerElement colorFromHexString:color] qd_imageByDrawingCircleOfColor];
+ return [[UIColor blackColor] qd_imageByDrawingCircleOfColor];
}
@@ -67,8 +67,8 @@ - (void)createElements {
for (NSUInteger i=0; i< [_items count]; i++){
QRadioItemElement *element = [[QRadioItemElement alloc] initWithIndex:i RadioElement:self];
- element.image = [self getImageFromItem:[self.items objectAtIndex:i]];
- element.title = [[self.items objectAtIndex:i] objectAtIndex:0];
+ element.image = [self getImageFromItem:self.items[i]];
+ element.title = [self.items[i] objectAtIndex:0];
[_parentSection addElement:element];
}
}
@@ -78,12 +78,13 @@ + (UIColor *)colorFromHexString:(NSString *)hexString {
NSScanner *scanner = [NSScanner scannerWithString:hexString];
[scanner setScanLocation:1]; // bypass '#' character
[scanner scanHexInt:&rgbValue];
- return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
+ return [UIColor colorWithRed:(CGFloat) (((rgbValue & 0xFF0000) >> 16) / 255.0) green:(CGFloat) (((rgbValue & 0xFF00) >> 8) / 255.0) blue:(CGFloat) ((rgbValue & 0xFF) / 255.0) alpha:1.0];
}
-- (void)setSelectedColor:(NSString *)colorName {
+- (void)setSelectedColor:(NSString *)color
+{
for (NSArray *item in _items){
- if ([colorName isEqualToString:[item objectAtIndex:0]]) {
+ if ([color isEqualToString:item[0]]) {
self.selected = [_items indexOfObject:item];
return;
}
diff --git a/extras/QMailElement.h b/Classes/Extras/QMailElement.h
similarity index 72%
rename from extras/QMailElement.h
rename to Classes/Extras/QMailElement.h
index e54028ae..35a68159 100644
--- a/extras/QMailElement.h
+++ b/Classes/Extras/QMailElement.h
@@ -6,11 +6,9 @@
// Copyright (c) 2013 ConferencesBox. All rights reserved.
//
-#import
#import
-#import "QuickDialog.h"
-#import "QLabelElement.h"
+#import
@interface QMailElement : QLabelElement {
@@ -28,7 +26,7 @@
@property(nonatomic, strong) NSArray *ccRecipients;
@property(nonatomic, strong) NSArray *bccRecipients;
-- (QMailElement *)initWithTitle:(NSString *)title subject:(NSString *)subject messageBody:(NSString *)messageBody toRecipients:(NSArray *)toRecipients ccRecipients:(NSArray *)ccRecipients bccRecipients:(NSArray *)bccRecipients;
+- (instancetype)initWithTitle:(NSString *)title subject:(NSString *)subject messageBody:(NSString *)messageBody toRecipients:(NSArray *)toRecipients ccRecipients:(NSArray *)ccRecipients bccRecipients:(NSArray *)bccRecipients;
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)path;
diff --git a/extras/QMailElement.m b/Classes/Extras/QMailElement.m
similarity index 73%
rename from extras/QMailElement.m
rename to Classes/Extras/QMailElement.m
index 53c68912..0cb9891e 100644
--- a/extras/QMailElement.m
+++ b/Classes/Extras/QMailElement.m
@@ -10,13 +10,7 @@
@implementation QMailElement
-@synthesize subject = _subject;
-@synthesize messageBody = _messageBody;
-@synthesize toRecipients = _toRecipients;
-@synthesize ccRecipients = _ccRecipients;
-@synthesize bccRecipients = _bccRecipients;
-
-- (QMailElement *)initWithTitle:(NSString *)title subject:(NSString *)subject messageBody:(NSString *)messageBody toRecipients:(NSArray *)toRecipients ccRecipients:(NSArray *)ccRecipients bccRecipients:(NSArray *)bccRecipients {
+- (instancetype)initWithTitle:(NSString *)title subject:(NSString *)subject messageBody:(NSString *)messageBody toRecipients:(NSArray *)toRecipients ccRecipients:(NSArray *)ccRecipients bccRecipients:(NSArray *)bccRecipients {
self = [super init];
if (self != nil) {
_title = title;
@@ -28,11 +22,11 @@ - (QMailElement *)initWithTitle:(NSString *)title subject:(NSString *)subject me
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
- return cell;
}
diff --git a/extras/QMapAnnotation.h b/Classes/Extras/QMapAnnotation.h
similarity index 90%
rename from extras/QMapAnnotation.h
rename to Classes/Extras/QMapAnnotation.h
index 17b6797a..610f161a 100644
--- a/extras/QMapAnnotation.h
+++ b/Classes/Extras/QMapAnnotation.h
@@ -24,7 +24,7 @@
NSString *_subtitle;
}
-- (QMapAnnotation *)initWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title;
+- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title;
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
diff --git a/extras/QMapAnnotation.m b/Classes/Extras/QMapAnnotation.m
similarity index 80%
rename from extras/QMapAnnotation.m
rename to Classes/Extras/QMapAnnotation.m
index 882c8a89..e08a06fe 100644
--- a/extras/QMapAnnotation.m
+++ b/Classes/Extras/QMapAnnotation.m
@@ -16,11 +16,7 @@
@implementation QMapAnnotation
-@synthesize coordinate = _coordinate;
-@synthesize title = _title;
-@synthesize subtitle = _subtitle;
-
-- (QMapAnnotation *)initWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title {
+- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title {
self = [super init];
self.coordinate = coordinate;
_title = title;
diff --git a/extras/QMapElement.h b/Classes/Extras/QMapElement.h
similarity index 87%
rename from extras/QMapElement.h
rename to Classes/Extras/QMapElement.h
index 54d38de7..6e151c05 100644
--- a/extras/QMapElement.h
+++ b/Classes/Extras/QMapElement.h
@@ -12,10 +12,9 @@
// permissions and limitations under the License.
//
-#import
#import
-#import "QRootElement.h"
+#import
/**
QMapElement: when selected, shows a fullscreen map with the location selected. Requires a lat/long value.
@@ -29,7 +28,7 @@
@property(nonatomic) CLLocationCoordinate2D coordinate;
-- (QMapElement *)initWithTitle:(NSString *)string coordinate:(CLLocationCoordinate2D)param;
+- (instancetype)initWithTitle:(NSString *)string coordinate:(CLLocationCoordinate2D)param;
- (void)setLat:(double)lat;
diff --git a/extras/QMapElement.m b/Classes/Extras/QMapElement.m
similarity index 88%
rename from extras/QMapElement.m
rename to Classes/Extras/QMapElement.m
index bc3e75c8..7907f82e 100644
--- a/extras/QMapElement.m
+++ b/Classes/Extras/QMapElement.m
@@ -15,18 +15,16 @@
#import "QMapViewController.h"
#import "QMapElement.h"
-#import "QuickDialog.h"
+#import
@implementation QMapElement
-@synthesize coordinate = _coordinate;
-
-- (QMapElement *)init {
+- (instancetype)init {
self = [self initWithTitle:@"" coordinate:CLLocationCoordinate2DMake(0, 0)];
return self;
}
-- (QMapElement *)initWithTitle:(NSString *)title coordinate:(CLLocationCoordinate2D)coordinate {
+- (instancetype)initWithTitle:(NSString *)title coordinate:(CLLocationCoordinate2D)coordinate {
self = [super init];
_title = title;
_coordinate = coordinate;
diff --git a/extras/QMapViewController.h b/Classes/Extras/QMapViewController.h
similarity index 84%
rename from extras/QMapViewController.h
rename to Classes/Extras/QMapViewController.h
index 4f7c1dcc..fe4381ef 100644
--- a/extras/QMapViewController.h
+++ b/Classes/Extras/QMapViewController.h
@@ -24,7 +24,7 @@
NSString *_mapTitle;
}
-- (QMapViewController *)initWithCoordinate:(CLLocationCoordinate2D)d;
+- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)d;
-- (QMapViewController *)initWithTitle:(NSString *)string coordinate:(CLLocationCoordinate2D)d;
+- (instancetype)initWithTitle:(NSString *)string coordinate:(CLLocationCoordinate2D)d;
@end
diff --git a/extras/QMapViewController.m b/Classes/Extras/QMapViewController.m
similarity index 90%
rename from extras/QMapViewController.m
rename to Classes/Extras/QMapViewController.m
index 8a23f211..c7679619 100644
--- a/extras/QMapViewController.m
+++ b/Classes/Extras/QMapViewController.m
@@ -19,13 +19,13 @@
@implementation QMapViewController
-- (QMapViewController *)initWithTitle:(NSString *)title coordinate:(CLLocationCoordinate2D)coordinate {
+- (instancetype)initWithTitle:(NSString *)title coordinate:(CLLocationCoordinate2D)coordinate {
self = [self initWithCoordinate:coordinate];
_mapTitle = title;
return self;
}
-- (QMapViewController *)initWithCoordinate:(CLLocationCoordinate2D)coordinate {
+- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate {
self = [super init];
if (self != nil){
diff --git a/extras/QWebElement.h b/Classes/Extras/QWebElement.h
similarity index 84%
rename from extras/QWebElement.h
rename to Classes/Extras/QWebElement.h
index 86c84b96..87f0f907 100644
--- a/extras/QWebElement.h
+++ b/Classes/Extras/QWebElement.h
@@ -12,8 +12,7 @@
// permissions and limitations under the License.
//
-#import
-#import "QLabelElement.h"
+#import
/**
QWebElement: pushes a simple browser that opens the URL defined in the element
@@ -30,8 +29,8 @@
@property(nonatomic, strong) NSString *html;
@property(nonatomic, readonly) NSString *file;
-- (QWebElement *)initWithTitle:(NSString *)title url:(NSString *)url;
-- (QWebElement *)initWithTitle:(NSString *)title HTML:(NSString *)html;
+- (instancetype)initWithTitle:(NSString *)title url:(NSString *)url;
+- (instancetype)initWithTitle:(NSString *)title HTML:(NSString *)html;
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)path;
diff --git a/extras/QWebElement.m b/Classes/Extras/QWebElement.m
similarity index 78%
rename from extras/QWebElement.m
rename to Classes/Extras/QWebElement.m
index dd0aedd7..7eb547f1 100644
--- a/extras/QWebElement.m
+++ b/Classes/Extras/QWebElement.m
@@ -13,15 +13,11 @@
//
#import "QWebElement.h"
-#import "QuickDialog.h"
#import "QWebViewController.h"
@implementation QWebElement
-@synthesize url = _url;
-@synthesize html = _html;
-
-- (QWebElement *)initWithTitle:(NSString *)title url:(NSString *)url {
+- (instancetype)initWithTitle:(NSString *)title url:(NSString *)url {
self = [super init];
if (self!=nil){
_url = url;
@@ -30,7 +26,7 @@ - (QWebElement *)initWithTitle:(NSString *)title url:(NSString *)url {
return self;
}
-- (QWebElement *)initWithTitle:(NSString *)title HTML:(NSString *)html {
+- (instancetype)initWithTitle:(NSString *)title HTML:(NSString *)html {
self = [super init];
if (self!=nil){
@@ -45,11 +41,11 @@ -(void)setFile:(NSString *)filename {
_url = [[NSBundle mainBundle] pathForResource:filename ofType:@"html"];
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
- return cell;
}
diff --git a/extras/QWebViewController.h b/Classes/Extras/QWebViewController.h
similarity index 88%
rename from extras/QWebViewController.h
rename to Classes/Extras/QWebViewController.h
index 3054f9db..514c973b 100644
--- a/extras/QWebViewController.h
+++ b/Classes/Extras/QWebViewController.h
@@ -25,6 +25,6 @@
NSString *_html;
}
-- (QWebViewController *)initWithUrl:(NSString *)string;
-- (QWebViewController *)initWithHTML:(NSString *)html;
+- (instancetype)initWithUrl:(NSString *)string;
+- (instancetype)initWithHTML:(NSString *)html;
@end
diff --git a/extras/QWebViewController.m b/Classes/Extras/QWebViewController.m
similarity index 91%
rename from extras/QWebViewController.m
rename to Classes/Extras/QWebViewController.m
index 51fd458e..c5d5055a 100644
--- a/extras/QWebViewController.m
+++ b/Classes/Extras/QWebViewController.m
@@ -28,7 +28,7 @@ @implementation QWebViewController {
BOOL _previousToolbarState;
NSArray *_urlToolbarItems;
}
-- (QWebViewController *)initWithHTML:(NSString *)html {
+- (instancetype)initWithHTML:(NSString *)html {
self = [super init];
if (self!=nil){
@@ -58,15 +58,12 @@ - (void)loadView {
spacer1.width = 30;
UIBarButtonItem *spacer2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spacer2.width = 30;
- _urlToolbarItems = [NSArray arrayWithObjects:
- _btBack,
- spacer1,
- _btForward,
- [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
- [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(actionRefresh)],
- spacer2,
- [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionGoToSafari)],
- nil];
+ _urlToolbarItems = @[
+ _btBack, spacer1, _btForward,
+ [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
+ [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(actionRefresh)],
+ spacer2,
+ [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionGoToSafari)]];
}
diff --git a/extras/UIColor+ColorUtilities.h b/Classes/Extras/UIColor+ColorUtilities.h
similarity index 75%
rename from extras/UIColor+ColorUtilities.h
rename to Classes/Extras/UIColor+ColorUtilities.h
index 0a585586..f1179b84 100644
--- a/extras/UIColor+ColorUtilities.h
+++ b/Classes/Extras/UIColor+ColorUtilities.h
@@ -10,7 +10,7 @@
@interface UIColor (ColorUtilities)
-- (UIColor *)darkerColor;
-- (UIImage *)imageByDrawingCircleOfColor;
+- (UIColor *)qd_darkerColor;
+- (UIImage *)qd_imageByDrawingCircleOfColor;
@end
diff --git a/extras/UIColor+ColorUtilities.m b/Classes/Extras/UIColor+ColorUtilities.m
similarity index 73%
rename from extras/UIColor+ColorUtilities.m
rename to Classes/Extras/UIColor+ColorUtilities.m
index f6c5ba0a..bcb70d6c 100644
--- a/extras/UIColor+ColorUtilities.m
+++ b/Classes/Extras/UIColor+ColorUtilities.m
@@ -8,25 +8,26 @@
@implementation UIColor (ColorUtilities)
-- (UIColor *)darkerColor
+- (UIColor *)qd_darkerColor
{
CGFloat r, g, b, a;
if ([self getRed:&r green:&g blue:&b alpha:&a])
- return [UIColor colorWithRed:MAX(r - 0.4, 0.0)
- green:MAX(g - 0.4, 0.0)
- blue:MAX(b - 0.4, 0.0)
+ return [UIColor colorWithRed:(CGFloat) MAX(r - 0.4, 0.0)
+ green:(CGFloat) MAX(g - 0.4, 0.0)
+ blue:(CGFloat) MAX(b - 0.4, 0.0)
alpha:a];
return nil;
}
-- (UIImage *)imageByDrawingCircleOfColor {
+- (UIImage *)qd_imageByDrawingCircleOfColor
+{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(30, 30), NO, [UIScreen mainScreen].scale);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx, 1.5f);
[self setFill];
- [[self darkerColor] setStroke];
+ [[self qd_darkerColor] setStroke];
CGRect circleRect = CGRectMake(0, 0, 30, 30);
circleRect = CGRectInset(circleRect, 8, 8);
CGContextFillEllipseInRect(ctx, circleRect);
diff --git a/quickdialog/QBadgeElement.h b/Classes/Forms/QBadgeElement.h
similarity index 77%
rename from quickdialog/QBadgeElement.h
rename to Classes/Forms/QBadgeElement.h
index a1c4f0cc..c233f79b 100644
--- a/quickdialog/QBadgeElement.h
+++ b/Classes/Forms/QBadgeElement.h
@@ -12,25 +12,18 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
-#import "QLabelElement.h"
+#import
/**
QBadgeElement: like the label cell, but the value is displayed with a badge, like the Mail app.
*/
-@interface QBadgeElement : QLabelElement {
-
-@private
- UIColor *_badgeColor;
- UIColor *_badgeTextColor;
- NSString *_badge;
-}
+@interface QBadgeElement : QLabelElement
@property(nonatomic, retain) UIColor *badgeTextColor;
@property(nonatomic, retain) UIColor *badgeColor;
@property(nonatomic, strong) NSString *badge;
-- (QBadgeElement *)initWithTitle:(NSString *)title Value:(NSString *)value;
+- (instancetype)initWithTitle:(NSString *)title Value:(NSString *)value;
@end
diff --git a/quickdialog/QBadgeElement.m b/Classes/Forms/QBadgeElement.m
similarity index 62%
rename from quickdialog/QBadgeElement.m
rename to Classes/Forms/QBadgeElement.m
index 8da1ccd0..19ce5aae 100644
--- a/quickdialog/QBadgeElement.m
+++ b/Classes/Forms/QBadgeElement.m
@@ -14,49 +14,54 @@
#import "QBadgeTableCell.h"
#import "QBadgeElement.h"
-#import "QuickDialog.h"
+#import "QBadgeLabel.h"
@implementation QBadgeElement {
}
-@synthesize badgeTextColor = _badgeTextColor;
-@synthesize badgeColor = _badgeColor;
-@synthesize badge = _badge;
-- (QBadgeElement *)init {
+- (instancetype)init {
self = [super init];
- _badgeColor = nil;
- _badgeTextColor = [UIColor whiteColor];
+ if (self!=nil)
+ {
+ self.badgeColor = nil;
+ self.badgeTextColor = [UIColor whiteColor];
+ self.cellClass = [QBadgeTableCell class];
+ }
return self;
}
-- (QBadgeElement *)initWithTitle:(NSString *)title Value:(NSString *)value {
+- (instancetype)initWithTitle:(NSString *)title Value:(NSString *)value {
self = [self init];
if (self) {
- _title = title;
- _badge = value;
+ self.title = title;
+ self.badge = value;
}
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- QBadgeTableCell *cell = [[QBadgeTableCell alloc] init];
- cell.textLabel.text = _title;
+- (void)setCurrentCell:(UITableViewCell *)currentCell
+{
+ super.currentCell = currentCell;
+
+ QBadgeTableCell *cell = (QBadgeTableCell *) currentCell;
+ cell.textLabel.text = self.title;
[cell applyAppearanceForElement:self];
- cell.badgeLabel.textColor = _badgeTextColor;
+ cell.badgeLabel.textColor = self.badgeTextColor;
if ([cell respondsToSelector:@selector(tintColor)])
- cell.badgeLabel.badgeColor = _badgeColor == nil ? cell.tintColor : _badgeTextColor;
+ cell.badgeLabel.badgeColor = self.badgeColor == nil ? cell.tintColor : self.badgeTextColor;
else
- cell.badgeLabel.badgeColor = _badgeColor;
+ cell.badgeLabel.badgeColor = self.badgeColor;
- cell.badgeLabel.text = _badge;
+ cell.badgeLabel.text = self.badge;
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
- cell.imageView.image = _image;
+ cell.imageView.image = self.image;
cell.accessoryType = self.sections!= nil || self.controllerAction!=nil ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone;
cell.selectionStyle = self.sections!= nil || self.controllerAction!=nil ? UITableViewCellSelectionStyleBlue: UITableViewCellSelectionStyleNone;
- return cell;
+
}
+
@end
diff --git a/quickdialog/QBadgeLabel.h b/Classes/Forms/QBadgeLabel.h
similarity index 95%
rename from quickdialog/QBadgeLabel.h
rename to Classes/Forms/QBadgeLabel.h
index 19f7392f..056552f3 100644
--- a/quickdialog/QBadgeLabel.h
+++ b/Classes/Forms/QBadgeLabel.h
@@ -13,8 +13,7 @@
//
-#import
-
+#import
@interface QBadgeLabel : UILabel {
diff --git a/quickdialog/QBadgeLabel.m b/Classes/Forms/QBadgeLabel.m
similarity index 96%
rename from quickdialog/QBadgeLabel.m
rename to Classes/Forms/QBadgeLabel.m
index f738d2a5..555f48c4 100644
--- a/quickdialog/QBadgeLabel.m
+++ b/Classes/Forms/QBadgeLabel.m
@@ -17,9 +17,8 @@
@implementation QBadgeLabel {
UIColor *_badgeColor;
}
-@synthesize badgeColor = _badgeColor;
-- (QBadgeLabel *)init {
+- (instancetype)init {
self = [super init];
self.frame = CGRectMake(0, 0, 100, 20);
self.textColor = [UIColor whiteColor];
diff --git a/quickdialog/QBadgeTableCell.h b/Classes/Forms/QBadgeTableCell.h
similarity index 87%
rename from quickdialog/QBadgeTableCell.h
rename to Classes/Forms/QBadgeTableCell.h
index 99503496..ef9309a5 100644
--- a/quickdialog/QBadgeTableCell.h
+++ b/Classes/Forms/QBadgeTableCell.h
@@ -12,9 +12,8 @@
// permissions and limitations under the License.
//
-#import
-#import
-#import "QTableViewCell.h"
+
+#import
@class QBadgeLabel;
@interface QBadgeTableCell : QTableViewCell {
@@ -22,7 +21,7 @@
@private
QBadgeLabel *_badgeLabel;
}
-- (QBadgeTableCell *)init;
+- (instancetype)init;
@property(nonatomic, readonly, strong) QBadgeLabel *badgeLabel;
@end
diff --git a/quickdialog/QBadgeTableCell.m b/Classes/Forms/QBadgeTableCell.m
similarity index 89%
rename from quickdialog/QBadgeTableCell.m
rename to Classes/Forms/QBadgeTableCell.m
index 8f87d044..a8c20be8 100644
--- a/quickdialog/QBadgeTableCell.m
+++ b/Classes/Forms/QBadgeTableCell.m
@@ -20,16 +20,13 @@ @interface QBadgeTableCell ()
@implementation QBadgeTableCell
-@synthesize badgeLabel = _badgeLabel;
-
-- (QBadgeTableCell *)init {
+- (instancetype)init {
self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformBadgeElement"];
if (self){
_badgeLabel = [[QBadgeLabel alloc] init];
[self.contentView addSubview:_badgeLabel];
_badgeLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_badgeLabel.contentMode = UIViewContentModeRedraw;
- _badgeLabel.contentStretch = CGRectMake(1., 0., 0., 0.);
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
return self;
@@ -38,12 +35,13 @@ - (QBadgeTableCell *)init {
- (void)layoutSubviews {
[super layoutSubviews];
CGRect rect = self.contentView.frame;
- CGSize badgeTextSize = [_badgeLabel.text sizeWithFont:_badgeLabel.font];
+ [_badgeLabel sizeToFit];
+ CGSize badgeTextSize = _badgeLabel.frame.size;
_badgeLabel.frame = CGRectIntegral(CGRectMake(rect.size.width - badgeTextSize.width - 10, ((rect.size.height - badgeTextSize.height) / 2)+1, badgeTextSize.width, badgeTextSize.height));
CGRect lblFrame = self.textLabel.frame;
if ((badgeTextSize.width+40+lblFrame.size.width)>self.contentView.bounds.size.width) {
- CGFloat newWidth = lblFrame.size.width-badgeTextSize.width;
+ CGFloat newWidth = lblFrame.size.width-badgeTextSize.width - 24;
self.textLabel.frame = CGRectMake(lblFrame.origin.x, lblFrame.origin.y, newWidth, lblFrame.size.height);
}
}
diff --git a/quickdialog/QBooleanElement.h b/Classes/Forms/QBooleanElement.h
similarity index 91%
rename from quickdialog/QBooleanElement.h
rename to Classes/Forms/QBooleanElement.h
index af2bab2c..6194bd6f 100644
--- a/quickdialog/QBooleanElement.h
+++ b/Classes/Forms/QBooleanElement.h
@@ -12,7 +12,7 @@
// permissions and limitations under the License.
//
-#import "QLabelElement.h"
+#import
/**
QBooleanElement: shows a on/off switch
@@ -30,7 +30,7 @@
@property(nonatomic, readwrite, assign) NSNumber *numberValue;
@property (nonatomic) BOOL boolValue;
-- (QBooleanElement *)initWithTitle:(NSString *)title BoolValue:(BOOL)value;
+- (instancetype)initWithTitle:(NSString *)title BoolValue:(BOOL)value;
- (void)setOnImageName:(NSString *)name;
diff --git a/quickdialog/QBooleanElement.m b/Classes/Forms/QBooleanElement.m
similarity index 83%
rename from quickdialog/QBooleanElement.m
rename to Classes/Forms/QBooleanElement.m
index db50fdf5..cf96aaa1 100644
--- a/quickdialog/QBooleanElement.m
+++ b/Classes/Forms/QBooleanElement.m
@@ -12,24 +12,17 @@
// permissions and limitations under the License.
//
-#import
-
#import "QBooleanElement.h"
-#import "QuickDialogController.h"
@implementation QBooleanElement {
}
-@synthesize onImage = _onImage;
-@synthesize offImage = _offImage;
-@synthesize boolValue = _boolValue;
-
-- (QBooleanElement *)init {
+- (instancetype)init {
self = [self initWithTitle:nil BoolValue:YES];
return self;
}
-- (QBooleanElement *)initWithTitle:(NSString *)title BoolValue:(BOOL)value {
+- (instancetype)initWithTitle:(NSString *)title BoolValue:(BOOL)value {
self = [self initWithTitle:title Value:nil];
self.boolValue = value;
self.enabled = YES;
@@ -41,7 +34,7 @@ -(void)setNumberValue:(NSNumber *)number {
}
-(NSNumber *)numberValue {
- return [NSNumber numberWithBool:self.boolValue];
+ return @(self.boolValue);
}
- (void)setOnImageName:(NSString *)name {
@@ -56,8 +49,9 @@ - (void)setOffImageName:(NSString *)name {
}
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.accessoryType = self.sections!= nil ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone;
cell.selectionStyle = self.sections!= nil ? UITableViewCellSelectionStyleBlue: UITableViewCellSelectionStyleNone;
@@ -79,7 +73,6 @@ - (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView contr
[boolButton sizeToFit];
[boolButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
}
- return cell;
}
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath {
@@ -111,15 +104,13 @@ -(void)setBoolValue:(BOOL)boolValue {
- (void)switched:(id)boolSwitch {
self.boolValue = ((UISwitch *)boolSwitch).on;
- if ((self.controller != nil && self.controllerAction != nil) || _onSelected != nil) {
- [self performAction];
- }
+ [self performAction];
}
- (void)fetchValueIntoObject:(id)obj {
if (_key==nil)
return;
- [obj setValue:[NSNumber numberWithBool:self.boolValue] forKey:_key];
+ [obj setValue:@(self.boolValue) forKey:_key];
}
diff --git a/quickdialog/QButtonElement.h b/Classes/Forms/QButtonElement.h
similarity index 87%
rename from quickdialog/QButtonElement.h
rename to Classes/Forms/QButtonElement.h
index 0c782e6d..3ede96f3 100644
--- a/quickdialog/QButtonElement.h
+++ b/Classes/Forms/QButtonElement.h
@@ -12,7 +12,7 @@
// permissions and limitations under the License.
//
-#import "QLabelElement.h"
+#import
/**
QButtonElement: centered title that looks like a button.
@@ -20,8 +20,8 @@
@interface QButtonElement : QLabelElement
-- (QButtonElement *)init;
+- (instancetype)init;
-- (QButtonElement *)initWithTitle:(NSString *)title;
+- (instancetype)initWithTitle:(NSString *)title;
@end
diff --git a/quickdialog/QButtonElement.m b/Classes/Forms/QButtonElement.m
similarity index 71%
rename from quickdialog/QButtonElement.m
rename to Classes/Forms/QButtonElement.m
index c002b9ac..a9d58d82 100644
--- a/quickdialog/QButtonElement.m
+++ b/Classes/Forms/QButtonElement.m
@@ -13,10 +13,11 @@
//
#import "QButtonElement.h"
+#import
@implementation QButtonElement
-- (QButtonElement *)init {
+- (instancetype)init {
self = [super init];
if (self) {
self.enabled = YES;
@@ -24,7 +25,7 @@ - (QButtonElement *)init {
return self;
}
-- (QButtonElement *)initWithTitle:(NSString *)title {
+- (instancetype)initWithTitle:(NSString *)title {
self = [super initWithTitle:title Value:nil];
if (self) {
self.enabled = YES;
@@ -32,19 +33,16 @@ - (QButtonElement *)initWithTitle:(NSString *)title {
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- QTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QuickformButtonElement"];
- if (cell == nil){
- cell= [[QTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"QuickformButtonElement"];
- }
- [cell applyAppearanceForElement:self];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.textLabel.text = _title;
cell.textLabel.textAlignment = self.appearance.buttonAlignment;
- cell.textLabel.font = self.appearance.labelFont;
+ cell.textLabel.font = self.appearance.titleFont;
cell.textLabel.textColor = self.enabled ? self.appearance.actionColorEnabled : self.appearance.actionColorDisabled;
- return cell;
}
+
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath {
if (self.enabled) {
[super selected:tableView controller:controller indexPath:indexPath];
diff --git a/quickdialog/QDateEntryTableViewCell.h b/Classes/Forms/QDateEntryTableViewCell.h
similarity index 85%
rename from quickdialog/QDateEntryTableViewCell.h
rename to Classes/Forms/QDateEntryTableViewCell.h
index f88b3b47..ef4a96e5 100644
--- a/quickdialog/QDateEntryTableViewCell.h
+++ b/Classes/Forms/QDateEntryTableViewCell.h
@@ -12,9 +12,9 @@
// permissions and limitations under the License.
//
-#import
-#import
-#import "QEntryTableViewCell.h"
+#import
+
+@class QDateTimeInlineElement;
@interface QDateEntryTableViewCell : QEntryTableViewCell {
@@ -26,4 +26,6 @@
@property(nonatomic, strong) UIDatePicker *pickerView;
@property(nonatomic, retain) UILabel *centeredLabel;
+@property(nonatomic, readonly) QDateTimeInlineElement *currentDateTimeElement;
+
@end
diff --git a/quickdialog/QDateEntryTableViewCell.m b/Classes/Forms/QDateEntryTableViewCell.m
similarity index 63%
rename from quickdialog/QDateEntryTableViewCell.m
rename to Classes/Forms/QDateEntryTableViewCell.m
index d074f982..236d5fbb 100644
--- a/quickdialog/QDateEntryTableViewCell.m
+++ b/Classes/Forms/QDateEntryTableViewCell.m
@@ -12,18 +12,12 @@
// permissions and limitations under the License.
//
-#import "QEntryTableViewCell.h"
#import "QDateEntryTableViewCell.h"
#import "QDateTimeInlineElement.h"
-#import "QTextField.h"
@implementation QDateEntryTableViewCell
-@synthesize pickerView = _pickerView;
-@synthesize centeredLabel = _centeredLabel;
-
-
-- (QDateEntryTableViewCell *)init {
+- (instancetype)init {
self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformDateTimeInlineElement"];
if (self!=nil){
[self createSubviews];
@@ -32,46 +26,51 @@ - (QDateEntryTableViewCell *)init {
return self;
}
+- (QDateTimeInlineElement *)currentDateTimeElement
+{
+ return (QDateTimeInlineElement *)self.currentEntryElement;
+}
+
+
- (void)textFieldDidEndEditing:(UITextField *)textField {
[super textFieldDidEndEditing:textField];
self.selected = NO;
- [_pickerView removeTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
- _pickerView = nil;
+ [self.pickerView removeTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
+ self.pickerView = nil;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
- QDateTimeInlineElement *const element = ((QDateTimeInlineElement *) _entryElement);
- [self prepareDateTimePicker:element];
+ [self prepareDateTimePicker:self.currentDateTimeElement];
- _textField.inputView = _pickerView;
+ self.textField.inputView = self.pickerView;
[super textFieldDidBeginEditing:textField];
self.selected = YES;
}
- (void)prepareDateTimePicker:(QDateTimeInlineElement * const)element
{
- if (!_pickerView)
- _pickerView = [[UIDatePicker alloc] init];
+ if (!self.pickerView)
+ self.pickerView = [[UIDatePicker alloc] init];
- _pickerView.timeZone = [NSTimeZone localTimeZone];
- [_pickerView sizeToFit];
- [_pickerView addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
- _pickerView.datePickerMode = element.mode;
- _pickerView.maximumDate = element.maximumDate;
- _pickerView.minimumDate = element.minimumDate;
- _pickerView.minuteInterval = element.minuteInterval;
+ self.pickerView.timeZone = [NSTimeZone localTimeZone];
+ [self.pickerView sizeToFit];
+ [self.pickerView addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
+ self.pickerView.datePickerMode = element.mode;
+ self.pickerView.maximumDate = element.maximumDate;
+ self.pickerView.minimumDate = element.minimumDate;
+ self.pickerView.minuteInterval = element.minuteInterval;
if (element.mode != UIDatePickerModeCountDownTimer && element.dateValue != nil)
- _pickerView.date = element.dateValue;
+ self.pickerView.date = element.dateValue;
else if (element.mode == UIDatePickerModeCountDownTimer && element.ticksValue != nil)
- _pickerView.countDownDuration = [element.ticksValue doubleValue];
+ self.pickerView.countDownDuration = [element.ticksValue doubleValue];
}
- (void)createSubviews {
[super createSubviews];
- _textField.hidden = YES;
- _textField.userInteractionEnabled = NO;
+ self.textField.hidden = YES;
+ self.textField.userInteractionEnabled = NO;
self.centeredLabel = [[UILabel alloc] init];
self.centeredLabel.highlightedTextColor = [UIColor whiteColor];
@@ -83,28 +82,27 @@ - (void)createSubviews {
}
- (void) dateChanged:(id)sender{
- QDateTimeInlineElement *const element = ((QDateTimeInlineElement *) _entryElement);
+ QDateTimeInlineElement *element = self.currentDateTimeElement;
if (element.mode == UIDatePickerModeCountDownTimer){
- element.ticksValue = [NSNumber numberWithDouble:_pickerView.countDownDuration];
+ element.ticksValue = @(self.pickerView.countDownDuration);
} else {
- element.dateValue = _pickerView.date;
+ element.dateValue = self.pickerView.date;
}
- [self prepareForElement:_entryElement inTableView:_quickformTableView];
+ [self prepareForElement:self.currentDateTimeElement];
[element handleEditingChanged:self];
}
-- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView {
- [super prepareForElement:element inTableView:tableView];
-
- QDateTimeInlineElement *dateElement = ((QDateTimeInlineElement *) element);
+- (void)prepareForElement:(QEntryElement *)element
+{
+ [super prepareForElement:element];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
if (element.customDateFormat!=nil){
dateFormatter.dateFormat = element.customDateFormat;
} else {
- switch (dateElement.mode) {
+ switch (self.currentDateTimeElement.mode) {
case UIDatePickerModeDate:
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
@@ -122,10 +120,10 @@ - (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTable
}
}
- NSString *value = dateElement.mode!=UIDatePickerModeCountDownTimer
- ? [dateFormatter stringFromDate:dateElement.dateValue]
- : [self formatInterval:dateElement.ticksValue.doubleValue];
- if (!dateElement.centerLabel){
+ NSString *value = self.currentDateTimeElement.mode!=UIDatePickerModeCountDownTimer
+ ? [dateFormatter stringFromDate:self.currentDateTimeElement.dateValue]
+ : [self formatInterval:self.currentDateTimeElement.ticksValue.doubleValue];
+ if (!self.currentDateTimeElement.centerLabel){
self.textLabel.text = element.title;
self.centeredLabel.text = nil;
self.detailTextLabel.text = value;
@@ -135,12 +133,12 @@ - (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTable
self.centeredLabel.text = value;
}
- _textField.text = value;
- _textField.placeholder = dateElement.placeholder;
+ self.textField.text = value;
+ self.textField.placeholder = self.currentDateTimeElement.placeholder;
- _textField.inputAccessoryView.hidden = dateElement.hiddenToolbar;
+ self.textField.inputAccessoryView.hidden = self.currentDateTimeElement.hiddenToolbar;
- self.centeredLabel.textColor = dateElement.appearance.entryTextColorEnabled;
+ self.centeredLabel.textColor = self.currentDateTimeElement.appearance.entryTextColorEnabled;
}
- (NSString *) formatInterval: (NSTimeInterval) interval
diff --git a/Classes/Forms/QDateInlineTableViewCell.h b/Classes/Forms/QDateInlineTableViewCell.h
new file mode 100644
index 00000000..b0b1f9cd
--- /dev/null
+++ b/Classes/Forms/QDateInlineTableViewCell.h
@@ -0,0 +1,25 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+#import
+
+@class QDateTimeInlineElement;
+
+@interface QDateInlineTableViewCell : QTableViewCell
+
+- (void)prepareForElement:(QDateTimeInlineElement *)element inTableView:(QuickDialogTableView *)tableView;
+
+@end
+
+
diff --git a/QDateInlineTableViewCell.m b/Classes/Forms/QDateInlineTableViewCell.m
similarity index 94%
rename from QDateInlineTableViewCell.m
rename to Classes/Forms/QDateInlineTableViewCell.m
index 30f9ca24..538a0ba4 100644
--- a/QDateInlineTableViewCell.m
+++ b/Classes/Forms/QDateInlineTableViewCell.m
@@ -1,7 +1,7 @@
//
// Copyright 2011 ESCOZ Inc - http://escoz.com
//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this #import "QDateTimeInlineElement.h"
// file except in compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
@@ -11,7 +11,9 @@
// ANY KIND, either express or implied. See the License for the specific language governing
// permissions and limitations under the License.
//
+
#import "QDateInlineTableViewCell.h"
+#import "QDateTimeInlineElement.h"
@interface QDateInlineTableViewCell ()
@property(nonatomic, strong) UIDatePicker *pickerView;
@@ -24,7 +26,7 @@ @implementation QDateInlineTableViewCell
}
-- (QDateInlineTableViewCell *)init {
+- (instancetype)init {
self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformDateTimeInlineElement"];
if (self!=nil){
self.selectionStyle = UITableViewCellSelectionStyleNone;
@@ -52,7 +54,7 @@ - (void)prepareDateTimePicker:(QDateTimeInlineElement *)element
- (void) dateChanged:(id)sender{
if (self.element.mode == UIDatePickerModeCountDownTimer){
- self.element.ticksValue = [NSNumber numberWithDouble:self.pickerView.countDownDuration];
+ self.element.ticksValue = @(self.pickerView.countDownDuration);
} else {
self.element.dateValue = self.pickerView.date;
}
@@ -125,7 +127,7 @@ - (void)setEditing:(BOOL)editing
}
[UIView animateWithDuration:0.3 animations:^{
- self.pickerView.alpha = editing ? 1.0 : 0.0;
+ self.pickerView.alpha = (CGFloat) (editing ? 1.0 : 0.0);
} completion:^(BOOL finished){
if (editing) {
@@ -165,7 +167,6 @@ - (NSString *) formatInterval: (NSTimeInterval) interval
- (void)layoutSubviews
{
[super layoutSubviews];
- [super layoutSubviewsInsideBounds:CGRectMake(0, 0, self.contentView.frame.size.width, 44)];
[self.pickerView sizeToFit];
CGFloat width = self.pickerView.frame.size.width;
self.pickerView.frame = CGRectMake((self.contentView.frame.size.width-width) / 2, 44, width, self.pickerView.frame.size.height);
diff --git a/quickdialog/QDateTimeElement.h b/Classes/Forms/QDateTimeElement.h
similarity index 85%
rename from quickdialog/QDateTimeElement.h
rename to Classes/Forms/QDateTimeElement.h
index 5c96d553..d4a2d7b0 100644
--- a/quickdialog/QDateTimeElement.h
+++ b/Classes/Forms/QDateTimeElement.h
@@ -12,10 +12,7 @@
// permissions and limitations under the License.
//
-
-#import "QRootElement.h"
-#import
-#import
+#import
/**
QDateTimeElement: allows you to edit dates, time, or date+time values. Editing occurs in a new controller that is pushed automatically.
@@ -35,8 +32,8 @@
@property (assign) UIDatePickerMode mode;
-- (QDateTimeElement *)init;
+- (instancetype)init;
-- (QDateTimeElement *)initWithTitle:(NSString *)string date:(NSDate *)date;
+- (instancetype)initWithTitle:(NSString *)string date:(NSDate *)date;
@end
diff --git a/quickdialog/QDateTimeElement.m b/Classes/Forms/QDateTimeElement.m
similarity index 84%
rename from quickdialog/QDateTimeElement.m
rename to Classes/Forms/QDateTimeElement.m
index 37a8b584..6ef55273 100644
--- a/quickdialog/QDateTimeElement.m
+++ b/Classes/Forms/QDateTimeElement.m
@@ -12,15 +12,9 @@
// permissions and limitations under the License.
//
-// TODO: Needs to be rewritten to use a custom UIViewController with the elements in it.
-// the animation is not smooth when using the dateselector as a keyboard
-
#import "QDateTimeElement.h"
#import "QDateTimeInlineElement.h"
-#import "QuickDialogController.h"
-#import "QuickDialog.h"
-
@interface QDateTimeElement ()
- (void)initializeRoot;
@@ -31,8 +25,6 @@ - (void)updateElements;
@implementation QDateTimeElement
-@synthesize dateValue = _dateValue;
-
- (void)setMode:(UIDatePickerMode)mode {
_mode = mode;
[[self sections] removeAllObjects];
@@ -57,7 +49,7 @@ - (void)setTicksValue:(NSNumber *)ticks {
}
-(NSNumber *)ticksValue {
- return [NSNumber numberWithDouble:[self.dateValue timeIntervalSince1970]];
+ return @([self.dateValue timeIntervalSince1970]);
}
- (UIDatePickerMode)mode {
@@ -69,7 +61,7 @@ - (NSInteger)minuteInterval
return _minuteInterval;
}
-- (QDateTimeElement *)init {
+- (instancetype)init {
self = [super init];
_grouped = YES;
_mode = UIDatePickerModeDateAndTime;
@@ -77,7 +69,7 @@ - (QDateTimeElement *)init {
return self;
}
-- (QDateTimeElement *)initWithTitle:(NSString *)title date:(NSDate *)date {
+- (instancetype)initWithTitle:(NSString *)title date:(NSDate *)date {
self = [super init];
if (self!=nil){
_grouped = YES;
@@ -89,8 +81,9 @@ - (QDateTimeElement *)initWithTitle:(NSString *)title date:(NSDate *)date {
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
switch (_mode) {
@@ -106,13 +99,11 @@ - (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView contr
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
break;
- case UIDatePickerModeCountDownTimer:
- break;
+ case UIDatePickerModeCountDownTimer:
+ break;
}
cell.detailTextLabel.text = [dateFormatter stringFromDate:_dateValue];
-
- return cell;
}
@@ -123,7 +114,7 @@ - (void)initializeRoot {
}
QSection *section = [[QSection alloc] initWithTitle:(_mode == UIDatePickerModeDateAndTime ? @"\n" : @"\n\n")];
if (_mode == UIDatePickerModeTime || _mode == UIDatePickerModeDateAndTime){
- QDateTimeInlineElement *timeElement = (QDateTimeInlineElement *) [[QDateTimeInlineElement alloc] initWithKey:@"time"];
+ QDateTimeInlineElement *timeElement = [[QDateTimeInlineElement alloc] initWithKey:@"time"];
timeElement.dateValue = dateForSection;
timeElement.centerLabel = YES;
timeElement.mode = UIDatePickerModeTime;
@@ -171,7 +162,7 @@ - (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogContro
newController.willDisappearCallback = ^{
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
- [((QSection *)[controllerForBlock.root.sections objectAtIndex:0]) fetchValueIntoObject:dict];
+ [((QSection *) controllerForBlock.root.sections[0]) fetchValueIntoObject:dict];
NSDate *date;
NSDate *time;
@@ -191,7 +182,7 @@ - (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogContro
}
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date];
- NSDateComponents *timeComponents = [[NSCalendar currentCalendar] components:kCFCalendarUnitHour | kCFCalendarUnitMinute | kCFCalendarUnitSecond fromDate:time];
+ NSDateComponents *timeComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:time];
[components setHour:[timeComponents hour]];
[components setMinute:[timeComponents minute]];
diff --git a/quickdialog/QDateTimeInlineElement.h b/Classes/Forms/QDateTimeInlineElement.h
similarity index 82%
rename from quickdialog/QDateTimeInlineElement.h
rename to Classes/Forms/QDateTimeInlineElement.h
index c27b5c6c..8caf7a02 100755
--- a/quickdialog/QDateTimeInlineElement.h
+++ b/Classes/Forms/QDateTimeInlineElement.h
@@ -12,8 +12,7 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
-#import "QEntryElement.h"
+#import
@class QDateEntryTableViewCell;
@@ -40,8 +39,8 @@
@property(nonatomic) BOOL showPickerInCell;
-- (QDateTimeInlineElement *)initWithDate:(NSDate *)date andMode:(UIDatePickerMode)mode;
+- (instancetype)initWithDate:(NSDate *)date andMode:(UIDatePickerMode)mode;
-- (QDateTimeInlineElement *)initWithTitle:(NSString *)string date:(NSDate *)date andMode:(UIDatePickerMode)mode;
+- (instancetype)initWithTitle:(NSString *)string date:(NSDate *)date andMode:(UIDatePickerMode)mode;
@end
diff --git a/quickdialog/QDateTimeInlineElement.m b/Classes/Forms/QDateTimeInlineElement.m
similarity index 87%
rename from quickdialog/QDateTimeInlineElement.m
rename to Classes/Forms/QDateTimeInlineElement.m
index a94d976f..1f49afa1 100755
--- a/quickdialog/QDateTimeInlineElement.m
+++ b/Classes/Forms/QDateTimeInlineElement.m
@@ -13,24 +13,15 @@
//
#import "QDateInlineTableViewCell.h"
+#import "QDateTimeInlineElement.h"
+#import "QDateEntryTableViewCell.h"
@implementation QDateTimeInlineElement {
@private
- NSDate *_maximumDate;
- NSDate *_minimumDate;
-
__weak QTableViewCell *_cell;
}
-@synthesize mode = _mode;
-@synthesize centerLabel = _centerLabel;
-@synthesize maximumDate = _maximumDate;
-@synthesize minimumDate = _minimumDate;
-@synthesize onValueChanged = _onValueChanged;
-@synthesize minuteInterval = _minuteInterval;
-
-
-- (QDateTimeInlineElement *)init {
+- (instancetype)init {
self = [super init];
_dateValue = [NSDate date];
self.keepSelected = YES;
@@ -74,7 +65,7 @@ - (NSDate *)dateValue
}
-(NSNumber *)ticksValue {
- return [NSNumber numberWithDouble:[self.dateValue timeIntervalSince1970]];
+ return @([self.dateValue timeIntervalSince1970]);
}
- (QDateTimeInlineElement *)initWithDate:(NSDate *)date andMode:(UIDatePickerMode)mode{
@@ -82,7 +73,7 @@ - (QDateTimeInlineElement *)initWithDate:(NSDate *)date andMode:(UIDatePickerMod
}
- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
-
+ // we really need to subclass here to create different cell types
QTableViewCell *cell= self.showPickerInCell ? [self getInlineCell:tableView] : [self getEntryCell:tableView];
return cell;
}
@@ -109,7 +100,7 @@ - (QDateEntryTableViewCell *)getEntryCell:(QuickDialogTableView *)tableView
cell = [[QDateEntryTableViewCell alloc] init];
}
_cell = cell;
- [cell prepareForElement:self inTableView:tableView];
+ [cell prepareForElement:self];
cell.selectionStyle = self.enabled ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone;
cell.textField.enabled = self.enabled;
cell.textField.userInteractionEnabled = self.enabled;
@@ -123,9 +114,9 @@ - (void)performAction
if (self.showPickerInCell){
BOOL shouldEdit = !_cell.isEditing;
- [((QuickDialogController *)self.controller).quickDialogTableView endEditingOnVisibleCells];
+ [self.currentTableView endEditingOnVisibleCells];
[_cell setEditing:shouldEdit];
- [((QuickDialogController *)self.controller).quickDialogTableView reloadRowHeights];
+ [self.currentTableView reloadRowHeights];
}
}
diff --git a/quickdialog/QDecimalElement.h b/Classes/Forms/QDecimalElement.h
similarity index 83%
rename from quickdialog/QDecimalElement.h
rename to Classes/Forms/QDecimalElement.h
index 0afa4ab2..6a1ebbd0 100644
--- a/quickdialog/QDecimalElement.h
+++ b/Classes/Forms/QDecimalElement.h
@@ -12,8 +12,7 @@
// permissions and limitations under the License.
//
-#import
-#import "QEntryElement.h"
+#import
/**
QDecimalElement: very much like an entry field, but allows only numbers to be typed. Automatically limits numbers to a predefined number of decimal places.
@@ -26,7 +25,6 @@
@property(nonatomic, retain) NSNumber * numberValue;
@property(nonatomic, assign) NSUInteger fractionDigits;
-- (QDecimalElement *)initWithTitle:(NSString *)string value:(NSNumber *)value;
-- (QDecimalElement *)initWithValue:(NSNumber *)value;
+- (instancetype)initWithTitle:(NSString *)string value:(NSNumber *)value;
@end
diff --git a/quickdialog/QDecimalElement.m b/Classes/Forms/QDecimalElement.m
similarity index 52%
rename from quickdialog/QDecimalElement.m
rename to Classes/Forms/QDecimalElement.m
index b8a5e5d1..b5bda939 100644
--- a/quickdialog/QDecimalElement.m
+++ b/Classes/Forms/QDecimalElement.m
@@ -12,65 +12,37 @@
// permissions and limitations under the License.
//
-#import "QEntryTableViewCell.h"
-#import "QDecimalTableViewCell.h"
#import "QDecimalElement.h"
+#import "QDecimalTableViewCell.h"
@implementation QDecimalElement {
-@protected
- NSUInteger _fractionDigits;
-}
-
-@synthesize numberValue = _numberValue;
-@synthesize fractionDigits = _fractionDigits;
-
-
-- (QDecimalElement *)initWithTitle:(NSString *)title value:(NSNumber *)value {
- self = [super initWithTitle:title Value:nil];
- if (self) {
- _numberValue = value;
- self.keyboardType = UIKeyboardTypeDecimalPad;
- }
- return self;
-}
-
-- (void)setFloatValue:(NSNumber *)floatValue {
- _numberValue = floatValue;
- if (_numberValue==nil)
- _numberValue = @0;
}
-- (QDecimalElement *)initWithValue:(NSNumber *)value {
+- (QEntryElement *)init {
self = [super init];
if (self) {
- _numberValue = value;
+ self.numberValue = @0;
self.keyboardType = UIKeyboardTypeDecimalPad;
+ self.cellClass = [QDecimalTableViewCell class];
}
+
return self;
}
-- (QEntryElement *)init {
- self = [super init];
+- (instancetype)initWithTitle:(NSString *)title value:(NSNumber *)value {
+ self = self.init;
if (self) {
- _numberValue = @0;
- self.keyboardType = UIKeyboardTypeDecimalPad;
+ self.title = title;
+ self.numberValue = value;
}
-
return self;
}
-
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
-
- QDecimalTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QuickformDecimalElement"];
- if (cell==nil){
- cell = [[QDecimalTableViewCell alloc] init];
- }
- [cell prepareForElement:self inTableView:tableView];
- cell.textField.userInteractionEnabled = self.enabled;
-
- return cell;
+- (void)setFloatValue:(NSNumber *)floatValue {
+ _numberValue = floatValue;
+ if (_numberValue==nil)
+ _numberValue = @0;
}
- (void)fetchValueIntoObject:(id)obj {
diff --git a/quickdialog/QDecimalTableViewCell.h b/Classes/Forms/QDecimalTableViewCell.h
similarity index 85%
rename from quickdialog/QDecimalTableViewCell.h
rename to Classes/Forms/QDecimalTableViewCell.h
index ddcf05c0..a4cf3ca8 100644
--- a/quickdialog/QDecimalTableViewCell.h
+++ b/Classes/Forms/QDecimalTableViewCell.h
@@ -12,12 +12,12 @@
// permissions and limitations under the License.
//
-#import "QEntryTableViewCell.h"
+#import
@interface QDecimalTableViewCell : QEntryTableViewCell {
}
-- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)view;
+- (void)prepareForElement:(QEntryElement *)element;
@end
diff --git a/quickdialog/QDecimalTableViewCell.m b/Classes/Forms/QDecimalTableViewCell.m
similarity index 50%
rename from quickdialog/QDecimalTableViewCell.m
rename to Classes/Forms/QDecimalTableViewCell.m
index 8dd8b3bf..d2163927 100644
--- a/quickdialog/QDecimalTableViewCell.m
+++ b/Classes/Forms/QDecimalTableViewCell.m
@@ -13,12 +13,13 @@
//
#import "QDecimalTableViewCell.h"
-#import "QuickDialog.h"
+#import "QDecimalElement.h"
+
@implementation QDecimalTableViewCell {
NSNumberFormatter *_numberFormatter;
}
-- (QDecimalTableViewCell *)init {
+- (instancetype)init {
self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformDecimalElement"];
if (self!=nil){
[self createSubviews];
@@ -30,33 +31,32 @@ - (QDecimalTableViewCell *)init {
}
- (void)createSubviews {
- _textField = [[QTextField alloc] init];
- //[_textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged];
- _textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
- _textField.borderStyle = UITextBorderStyleNone;
- _textField.keyboardType = UIKeyboardTypeDecimalPad;
- _textField.delegate = self;
- _textField.clearButtonMode = UITextFieldViewModeWhileEditing;
- _textField.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
- [self.contentView addSubview:_textField];
+ self.textField = [[QTextField alloc] init];
+ //[self.textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged];
+ self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
+ self.textField.borderStyle = UITextBorderStyleNone;
+ self.textField.keyboardType = UIKeyboardTypeDecimalPad;
+ self.textField.delegate = self;
+ self.textField.clearButtonMode = UITextFieldViewModeWhileEditing;
+ self.textField.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
+ [self.contentView addSubview:self.textField];
[self setNeedsLayout];
}
-- (QDecimalElement *)decimalElement {
- return ((QDecimalElement *)_entryElement);
+- (QDecimalElement *)currentDecimalElement
+{
+ return ((QDecimalElement *)self.currentEntryElement);
}
- (void)updateTextFieldFromElement {
- [_numberFormatter setMaximumFractionDigits:[self decimalElement].fractionDigits];
- [_numberFormatter setMinimumFractionDigits:[self decimalElement].fractionDigits];
- QDecimalElement *el = (QDecimalElement *)_entryElement;
- _textField.text = [_numberFormatter stringFromNumber:el.numberValue];
+ [_numberFormatter setMaximumFractionDigits:[self currentDecimalElement].fractionDigits];
+ [_numberFormatter setMinimumFractionDigits:[self currentDecimalElement].fractionDigits];
+ self.textField.text = [_numberFormatter stringFromNumber:self.currentDecimalElement.numberValue];
}
-- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)view {
- [super prepareForElement:element inTableView:view];
- _entryElement = element;
+- (void)prepareForElement:(QEntryElement *)element
+{
[self updateTextFieldFromElement];
}
@@ -69,23 +69,23 @@ - (void)updateElementFromTextField:(NSString *)value {
[result appendString:charStr];
}
}
- [_numberFormatter setMaximumFractionDigits:[self decimalElement].fractionDigits];
- [_numberFormatter setMinimumFractionDigits:[self decimalElement].fractionDigits];
+ [_numberFormatter setMaximumFractionDigits:[self currentDecimalElement].fractionDigits];
+ [_numberFormatter setMinimumFractionDigits:[self currentDecimalElement].fractionDigits];
float parsedValue = [_numberFormatter numberFromString:result].floatValue;
- [self decimalElement].numberValue = [NSNumber numberWithFloat:(float) (parsedValue / pow(10, [self decimalElement].fractionDigits))];
+ [self currentDecimalElement].numberValue = @((float) (parsedValue / pow(10, [self currentDecimalElement].fractionDigits)));
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacement {
BOOL shouldChange = YES;
- if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryShouldChangeCharactersInRange:withString:forElement:andCell:)])
- shouldChange = [_entryElement.delegate QEntryShouldChangeCharactersInRange:range withString:replacement forElement:_entryElement andCell:self];
+ if(self.currentEntryElement && self.currentEntryElement.delegate && [self.currentEntryElement.delegate respondsToSelector:@selector(QEntryShouldChangeCharactersInRange:withString:forElement:andCell:)])
+ shouldChange = [self.currentEntryElement.delegate QEntryShouldChangeCharactersInRange:range withString:replacement forElement:self.currentEntryElement andCell:self];
if( shouldChange ) {
- NSString *newValue = [_textField.text stringByReplacingCharactersInRange:range withString:replacement];
+ NSString *newValue = [self.textField.text stringByReplacingCharactersInRange:range withString:replacement];
[self updateElementFromTextField:newValue];
[self updateTextFieldFromElement];
- [_entryElement handleEditingChanged:self];
+ [self.currentEntryElement handleEditingChanged:self];
}
return NO;
}
diff --git a/quickdialog/QImageElement.h b/Classes/Forms/QImageElement.h
similarity index 84%
rename from quickdialog/QImageElement.h
rename to Classes/Forms/QImageElement.h
index de4ab021..6c4c86cf 100644
--- a/quickdialog/QImageElement.h
+++ b/Classes/Forms/QImageElement.h
@@ -12,10 +12,7 @@
// permissions and limitations under the License.
//
-
-#import
-#import
-#import "QRootElement.h"
+#import
@interface QImageElement : QEntryElement
@@ -25,6 +22,6 @@
@property(nonatomic) UIImagePickerControllerSourceType source;
-- (QImageElement *)initWithTitle:(NSString *)title detailImage:(UIImage *)image;
+- (instancetype)initWithTitle:(NSString *)title detailImage:(UIImage *)image;
@end
diff --git a/quickdialog/QImageElement.m b/Classes/Forms/QImageElement.m
similarity index 82%
rename from quickdialog/QImageElement.m
rename to Classes/Forms/QImageElement.m
index eab3f0e2..ff2c6c59 100644
--- a/quickdialog/QImageElement.m
+++ b/Classes/Forms/QImageElement.m
@@ -12,7 +12,9 @@
// permissions and limitations under the License.
//
+#import "../Core/QEntryElement.h"
#import "QImageTableViewCell.h"
+#import "QImageElement.h"
@interface QImageElement ()
@@ -21,34 +23,24 @@ @interface QImageElement ()
-#import
-#import
-#import "QEntryTableViewCell.h"
+#import "../Core/QEntryTableViewCell.h"
@class QImageElement;
@class QuickDialogTableView;
@@ -28,7 +25,7 @@
@property (nonatomic, retain) UIButton *imageViewButton;
-- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView;
+- (void)prepareForElement:(QEntryElement *)element;
- (void)createSubviews;
@end
diff --git a/quickdialog/QImageTableViewCell.m b/Classes/Forms/QImageTableViewCell.m
similarity index 88%
rename from quickdialog/QImageTableViewCell.m
rename to Classes/Forms/QImageTableViewCell.m
index e40ede15..ecffdaef 100644
--- a/quickdialog/QImageTableViewCell.m
+++ b/Classes/Forms/QImageTableViewCell.m
@@ -24,10 +24,8 @@ @interface QImageTableViewCell ()
@implementation QImageTableViewCell
-@synthesize imageElement = _imageElement;
-@synthesize imageViewButton = _imageViewButton;
-- (QImageTableViewCell *)init {
+- (instancetype)init {
self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformImageElement"];
if (self!=nil){
[self createSubviews];
@@ -51,15 +49,13 @@ - (void)createSubviews {
}
- (void)handleImageSelected {
- if (((QImageElement *)_entryElement).imageValue!=nil){
-
- } else{
-
- }
+/* if (((QImageElement *)self.entryElement).imageValue!=nil){
+ }*/
}
-- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView {
- [super prepareForElement:element inTableView:tableView];
+- (void)prepareForElement:(QEntryElement *)element
+{
+ [super prepareForElement:element];
self.imageElement = (QImageElement *) element;
@@ -82,7 +78,7 @@ - (void)recalculateDetailImageViewPosition {
_imageElement.parentSection.entryPosition = _imageViewButton.frame;
CGRect labelFrame = self.textLabel.frame;
- CGFloat extra = (_entryElement.image == NULL) ? 10.0f : _entryElement.image.size.width + 20.0f;
+ CGFloat extra = (self.currentEntryElement.image == NULL) ? 10.0f : self.currentEntryElement.image.size.width + 20.0f;
self.textLabel.frame = CGRectMake(labelFrame.origin.x, labelFrame.origin.y,
_imageElement.parentSection.entryPosition.origin.x - extra - detailImageMargin, labelFrame.size.height);
}
diff --git a/quickdialog/QMultilineElement.h b/Classes/Forms/QMultilineElement.h
similarity index 88%
rename from quickdialog/QMultilineElement.h
rename to Classes/Forms/QMultilineElement.h
index a31edb33..c3fbfb2c 100644
--- a/quickdialog/QMultilineElement.h
+++ b/Classes/Forms/QMultilineElement.h
@@ -12,8 +12,8 @@
// permissions and limitations under the License.
//
+#import
-#import "QEntryElement.h"
@class QMultilineElement;
@protocol QuickDialogEntryElementDelegate;
@@ -23,6 +23,6 @@
@property(nonatomic, assign) id< QuickDialogEntryElementDelegate> delegate;
-- (QMultilineElement *)initWithTitle:(NSString *)title value:(NSString *)text;
+- (instancetype)initWithTitle:(NSString *)title value:(NSString *)text;
@end
diff --git a/quickdialog/QMultilineElement.m b/Classes/Forms/QMultilineElement.m
similarity index 83%
rename from quickdialog/QMultilineElement.m
rename to Classes/Forms/QMultilineElement.m
index 990c4ee2..9112520f 100644
--- a/quickdialog/QMultilineElement.m
+++ b/Classes/Forms/QMultilineElement.m
@@ -12,42 +12,42 @@
// permissions and limitations under the License.
//
+#import "QElement.h"
#import "QMultilineElement.h"
-#import "QuickDialog.h"
-@implementation QMultilineElement
-
-@synthesize delegate = _delegate;
+#import "QMultilineTextViewController.h"
+@implementation QMultilineElement
-- (QEntryElement *)init {
+- (instancetype)init {
self = [super init];
if (self) {
self.presentationMode = QPresentationModePopover;
+ self.cellClass = [QEntryTableViewCell class];
}
return self;
}
-- (QMultilineElement *)initWithTitle:(NSString *)title value:(NSString *)text
+- (instancetype)initWithTitle:(NSString *)title value:(NSString *)text
{
- if ((self = [super initWithTitle:title Value:nil])) {
+ self = self.init;
+ if (self!=nil) {
self.textValue = text;
- self.presentationMode = QPresentationModePopover;
}
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- QEntryTableViewCell *cell = (QEntryTableViewCell *) [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)currentCell
+{
+ super.currentCell = currentCell;
+
+ QEntryTableViewCell *cell = (QEntryTableViewCell *) currentCell;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.selectionStyle = self.enabled ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone;
cell.textField.enabled = NO;
cell.textField.textAlignment = self.appearance.labelAlignment;
-
- return cell;
}
-
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath
{
QMultilineTextViewController *textController = [[QMultilineTextViewController alloc] initWithTitle:self.title];
diff --git a/quickdialog/QMultilineTextViewController.h b/Classes/Forms/QMultilineTextViewController.h
similarity index 91%
rename from quickdialog/QMultilineTextViewController.h
rename to Classes/Forms/QMultilineTextViewController.h
index aa8470dd..4f1eeab0 100644
--- a/quickdialog/QMultilineTextViewController.h
+++ b/Classes/Forms/QMultilineTextViewController.h
@@ -12,10 +12,8 @@
// permissions and limitations under the License.
//
+#import
-#import
-
-@class QMultilineTextViewController;
@class QMultilineElement;
@class QEntryTableViewCell;
@@ -31,6 +29,6 @@
@property(nonatomic, strong) QEntryTableViewCell *entryCell;
-- (id)initWithTitle:(NSString *)title;
+- (instancetype)initWithTitle:(NSString *)title;
@end
diff --git a/quickdialog/QMultilineTextViewController.m b/Classes/Forms/QMultilineTextViewController.m
similarity index 84%
rename from quickdialog/QMultilineTextViewController.m
rename to Classes/Forms/QMultilineTextViewController.m
index 329bb8b1..410000ef 100644
--- a/quickdialog/QMultilineTextViewController.m
+++ b/Classes/Forms/QMultilineTextViewController.m
@@ -13,7 +13,9 @@
//
-#import "QuickDialog.h"
+
+#import "QMultilineTextViewController.h"
+#import "QMultilineElement.h"
@interface QMultilineTextViewController ()
@@ -25,14 +27,7 @@ @implementation QMultilineTextViewController {
UITextView* _textView;
}
-@synthesize textView = _textView;
-@synthesize resizeWhenKeyboardPresented = _resizeWhenKeyboardPresented;
-@synthesize willDisappearCallback = _willDisappearCallback;
-@synthesize entryElement = _entryElement;
-@synthesize entryCell = _entryCell;
-
-
-- (id)initWithTitle:(NSString *)title
+- (instancetype)initWithTitle:(NSString *)title
{
if ((self = [super init]))
{
@@ -95,9 +90,9 @@ - (void) resizeForKeyboard:(NSNotification*)aNotification {
NSTimeInterval animationDuration;
UIViewAnimationOptions animationCurve;
CGRect keyboardEndFrame;
- [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
- [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
- [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
+ [userInfo[UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
+ [userInfo[UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
+ [userInfo[UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
[UIView animateWithDuration:animationDuration delay:0 options:animationCurve
animations:^{
@@ -135,10 +130,8 @@ - (void)textViewDidEndEditing:(UITextView *)textView {
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
- if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryShouldChangeCharactersInRange:withString:forElement:andCell:)]){
- return [_entryElement.delegate QEntryShouldChangeCharactersInRange:range withString:text forElement:_entryElement andCell:self.entryCell];
- }
- return YES;
+ return !(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryShouldChangeCharactersInRange:withString:forElement:andCell:)])
+ || [_entryElement.delegate QEntryShouldChangeCharactersInRange:range withString:text forElement:_entryElement andCell:self.entryCell];
}
- (void)textViewDidChange:(UITextView *)textView {
diff --git a/quickdialog/QProgressElement.h b/Classes/Forms/QProgressElement.h
similarity index 72%
rename from quickdialog/QProgressElement.h
rename to Classes/Forms/QProgressElement.h
index 132852f2..640e7a8c 100644
--- a/quickdialog/QProgressElement.h
+++ b/Classes/Forms/QProgressElement.h
@@ -4,8 +4,7 @@
// Created by Xhacker on 2013-04-12.
//
-#import "QuickDialog.h"
-#import
+#import
@interface QProgressElement : QElement
diff --git a/quickdialog/QProgressElement.m b/Classes/Forms/QProgressElement.m
similarity index 77%
rename from quickdialog/QProgressElement.m
rename to Classes/Forms/QProgressElement.m
index 3c84aad2..2fc38f61 100644
--- a/quickdialog/QProgressElement.m
+++ b/Classes/Forms/QProgressElement.m
@@ -14,7 +14,7 @@ @interface QProgressElement ()
@implementation QProgressElement
-- (QProgressElement *)init
+- (instancetype)init
{
self = [super init];
self.bar = [[UIProgressView alloc] init];
@@ -27,17 +27,15 @@ - (void)setProgress:(float)progress
self.bar.progress = progress;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller
+- (void)setCurrentCell:(UITableViewCell *)cell
{
- QTableViewCell *const cell = [[QTableViewCell alloc] init];
- [cell applyAppearanceForElement:self];
+ super.currentCell = cell;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
-
+
self.bar.frame = CGRectMake(0, 0, cell.contentView.frame.size.width - 60, self.bar.frame.size.height);
self.bar.center = CGPointMake(cell.contentView.frame.size.width / 2, cell.contentView.frame.size.height / 2);
self.bar.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[cell.contentView addSubview:self.bar];
- return cell;
}
@end
diff --git a/quickdialog/QRadioElement.h b/Classes/Forms/QRadioElement.h
similarity index 78%
rename from quickdialog/QRadioElement.h
rename to Classes/Forms/QRadioElement.h
index a4bbfea2..008f643f 100644
--- a/quickdialog/QRadioElement.h
+++ b/Classes/Forms/QRadioElement.h
@@ -12,8 +12,7 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
-#import "QEntryElement.h"
+#import
/**
QRadioElement: allows user to select one of multiple options available. Automatically pushes a new table with the item to be selected.
@@ -31,15 +30,15 @@
@property(nonatomic, retain) NSArray *values;
@property(nonatomic, strong) NSArray *itemsImageNames;
-- (QRadioElement *)initWithDict:(NSDictionary *)valuesDictionary selected:(int)selected title:(NSString *)title;
+- (instancetype)initWithDict:(NSDictionary *)valuesDictionary selected:(int)selected title:(NSString *)title;
- (void)createElements;
- (NSObject *)selectedValue;
- (void)setSelectedValue:(NSObject *)aSelected;
-- (QRadioElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected;
-- (QRadioElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title;
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected;
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title;
- (void)updateCell:(QEntryTableViewCell *)cell selectedValue:(id)selectedValue;
diff --git a/quickdialog/QRadioElement.m b/Classes/Forms/QRadioElement.m
similarity index 80%
rename from quickdialog/QRadioElement.m
rename to Classes/Forms/QRadioElement.m
index 1dbfc2fa..7815d5c4 100644
--- a/quickdialog/QRadioElement.m
+++ b/Classes/Forms/QRadioElement.m
@@ -12,19 +12,14 @@
// permissions and limitations under the License.
//
-#import "QBindingEvaluator.h"
+#import
#import "QRadioElement.h"
-#import "QuickDialog.h"
+#import "QRadioItemElement.h"
@implementation QRadioElement {
QSection *_internalRadioItemsSection;
}
-@synthesize selected = _selected;
-@synthesize values = _values;
-@synthesize items = _items;
-@synthesize itemsImageNames = _itemsImageNames;
-
- (void)createElements {
_sections = nil;
@@ -35,8 +30,8 @@ - (void)createElements {
for (NSUInteger i=0; i< [_items count]; i++){
QRadioItemElement *element = [[QRadioItemElement alloc] initWithIndex:i RadioElement:self];
- element.imageNamed = [self.itemsImageNames objectAtIndex:i];
- element.title = [self.items objectAtIndex:i];
+ element.imageNamed = self.itemsImageNames[i];
+ element.title = self.items[i];
[_internalRadioItemsSection addElement:element];
}
}
@@ -57,7 +52,7 @@ -(NSObject *)selectedValue {
if (_selected<0 || _selected>=_values.count)
return nil;
- return [_values objectAtIndex:(NSUInteger) _selected];
+ return _values[(NSUInteger) _selected];
}
-(void)setSelectedValue:(NSObject *)aSelected {
@@ -69,7 +64,7 @@ -(void)setSelectedValue:(NSObject *)aSelected {
}
-- (QEntryElement *)init {
+- (instancetype)init {
self = [super init];
if (self) {
_selected = -1;
@@ -79,14 +74,14 @@ - (QEntryElement *)init {
}
-- (QRadioElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected {
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected {
self = [self initWithItems:stringArray selected:selected title:nil];
_selected = selected;
return self;
}
-- (QRadioElement *)initWithDict:(NSDictionary *)valuesDictionary selected:(int)selected title:(NSString *)title {
+- (instancetype)initWithDict:(NSDictionary *)valuesDictionary selected:(int)selected title:(NSString *)title {
self = [self initWithItems:valuesDictionary.allKeys selected:(NSUInteger) selected];
_values = valuesDictionary.allValues;
_selected = selected;
@@ -94,6 +89,15 @@ - (QRadioElement *)initWithDict:(NSDictionary *)valuesDictionary selected:(int)s
return self;
}
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title {
+ self = [super init];
+ if (self!=nil){
+ self.items = stringArray;
+ self.selected = selected;
+ self.title = title;
+ }
+ return self;
+}
-(void)setSelectedItem:(id)item {
if (self.items==nil || item==nil)
@@ -105,18 +109,9 @@ -(id)selectedItem {
if (self.items == nil || [self.items count]= 0 && _selected <_items.count){
- selectedValue = [_items objectAtIndex:(NSUInteger) _selected];
+ selectedValue = _items[(NSUInteger) _selected];
}
[self updateCell:cell selectedValue:selectedValue];
@@ -164,8 +159,8 @@ -(void)setSelected:(NSInteger)aSelected {
self.preselectedElementIndex = [NSIndexPath indexPathForRow:_selected inSection:0];
- if([_itemsImageNames objectAtIndex:(NSUInteger) self.selected] != nil) {
- self.image = [UIImage imageNamed:[_itemsImageNames objectAtIndex:(NSUInteger) self.selected]];
+ if(_itemsImageNames[(NSUInteger) self.selected] != nil) {
+ self.image = [UIImage imageNamed:_itemsImageNames[(NSUInteger) self.selected]];
}
[self handleEditingChanged];
@@ -179,9 +174,9 @@ - (void)fetchValueIntoObject:(id)obj {
return;
if (_values==nil){
- [obj setValue:[NSNumber numberWithInteger:_selected] forKey:_key];
+ [obj setValue:@(_selected) forKey:_key];
} else {
- [obj setValue:[_values objectAtIndex:(NSUInteger) _selected] forKey:_key];
+ [obj setValue:_values[(NSUInteger) _selected] forKey:_key];
}
}
diff --git a/quickdialog/QRadioItemElement.h b/Classes/Forms/QRadioItemElement.h
similarity index 72%
rename from quickdialog/QRadioItemElement.h
rename to Classes/Forms/QRadioItemElement.h
index d8ee3b76..7acf5698 100644
--- a/quickdialog/QRadioItemElement.h
+++ b/Classes/Forms/QRadioItemElement.h
@@ -12,10 +12,11 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
-#import "QLabelElement.h"
-#import "QRadioElement.h"
-#import "QRadioSection.h"
+#import
+
+@class QRadioSection;
+@class QRadioElement;
+
@interface QRadioItemElement : QLabelElement {
NSUInteger _index;
@@ -23,7 +24,7 @@
__weak QRadioElement *_radioElement;
}
-- (QRadioItemElement *)initWithIndex:(NSUInteger)i1 RadioElement:(QRadioElement *)element;
+- (instancetype)initWithIndex:(NSUInteger)i1 RadioElement:(QRadioElement *)element;
-- (QRadioItemElement *)initWithIndex:(NSUInteger)integer RadioSection:(QRadioSection *)section;
+- (instancetype)initWithIndex:(NSUInteger)integer RadioSection:(QRadioSection *)section;
@end
diff --git a/quickdialog/QRadioItemElement.m b/Classes/Forms/QRadioItemElement.m
similarity index 84%
rename from quickdialog/QRadioItemElement.m
rename to Classes/Forms/QRadioItemElement.m
index f90752ff..ddc8ce0e 100644
--- a/quickdialog/QRadioItemElement.m
+++ b/Classes/Forms/QRadioItemElement.m
@@ -12,38 +12,38 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
-#import "QSection.h"
-#import "QRootElement.h"
#import "QRadioItemElement.h"
+#import "QRadioSection.h"
+#import "QRadioElement.h"
@implementation QRadioItemElement
-- (QRadioItemElement *)initWithIndex:(NSUInteger)index RadioElement:(QRadioElement *)radioElement {
+- (instancetype)initWithIndex:(NSUInteger)index RadioElement:(QRadioElement *)radioElement {
self = [super init];
_radioElement = radioElement;
_index = index;
return self;
}
-- (QRadioItemElement *)initWithIndex:(NSUInteger)index RadioSection:(QRadioSection *)section {
+- (instancetype)initWithIndex:(NSUInteger)index RadioSection:(QRadioSection *)section {
self = [super init];
_radioSection = section;
_index = index;
return self;
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
NSInteger selectedIndex = _radioElement==nil? _radioSection.selected : _radioElement.selected;
cell.accessoryType = selectedIndex == _index ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
cell.textLabel.textAlignment = NSTextAlignmentLeft; // hardcoded so that appearance doesn't change it
cell.textLabel.textColor = self.enabled ? self.appearance.valueColorEnabled : self.appearance.valueColorDisabled;
cell.imageView.image = self.image;
- return cell;
}
+
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath {
[super selected:tableView controller:controller indexPath:indexPath];
diff --git a/quickdialog/QRadioSection.h b/Classes/Forms/QRadioSection.h
similarity index 96%
rename from quickdialog/QRadioSection.h
rename to Classes/Forms/QRadioSection.h
index c4f746c8..a6b09694 100644
--- a/quickdialog/QRadioSection.h
+++ b/Classes/Forms/QRadioSection.h
@@ -12,7 +12,7 @@
// permissions and limitations under the License.
//
-#import "QSection.h"
+#import
#import "QSelectSection.h"
/**
diff --git a/quickdialog/QRadioSection.m b/Classes/Forms/QRadioSection.m
similarity index 74%
rename from quickdialog/QRadioSection.m
rename to Classes/Forms/QRadioSection.m
index bc3cae36..72e7a5bd 100644
--- a/quickdialog/QRadioSection.m
+++ b/Classes/Forms/QRadioSection.m
@@ -12,21 +12,21 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
+#import
#import "QRadioSection.h"
-#import "QRootElement.h"
-#import "QRadioItemElement.h"
+
@implementation QRadioSection
+
- (NSInteger)selected
{
- return [[self.selectedIndexes objectAtIndex:0] unsignedIntegerValue];
+ return [self.selectedIndexes[0] unsignedIntegerValue];
}
- (void)setSelected:(NSInteger)selected
{
- [self.selectedIndexes replaceObjectAtIndex:0 withObject:[NSNumber numberWithUnsignedInteger:selected]];
+ self.selectedIndexes[0] = @(selected);
}
diff --git a/Classes/Forms/QSegmentedElement.h b/Classes/Forms/QSegmentedElement.h
new file mode 100644
index 00000000..078bf66a
--- /dev/null
+++ b/Classes/Forms/QSegmentedElement.h
@@ -0,0 +1,19 @@
+//
+// Created by escoz on 1/15/12.
+//
+
+#import
+#import "QRadioElement.h"
+
+
+@interface QSegmentedElement : QRadioElement {
+
+}
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected;
+
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title;
+
+- (instancetype)init;
+
+
+@end
diff --git a/quickdialog/QSegmentedElement.m b/Classes/Forms/QSegmentedElement.m
similarity index 73%
rename from quickdialog/QSegmentedElement.m
rename to Classes/Forms/QSegmentedElement.m
index 139096fd..347356f9 100644
--- a/quickdialog/QSegmentedElement.m
+++ b/Classes/Forms/QSegmentedElement.m
@@ -23,17 +23,17 @@ - (void)setItems:(NSArray *)anItems {
}
}
-- (QSegmentedElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected {
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected {
self = [super initWithItems:stringArray selected:selected];
return self;
}
-- (QSegmentedElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title {
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title {
self = [super initWithItems:stringArray selected:selected title:title];
return self;
}
-- (QSegmentedElement *)init {
+- (instancetype)init {
self = [super init];
return self;
}
@@ -46,22 +46,19 @@ - (void)handleSegmentedControlValueChanged:(id)control {
[self handleEditingChanged];
}
-
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- self.controller = controller;
- QTableViewCell *cell = [[QTableViewCell alloc] init];
+- (void)setCurrentCell:(UITableViewCell *)cell
+{
+ super.currentCell = cell;
cell.backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
cell.backgroundColor = [UIColor clearColor];
UISegmentedControl *control = [[UISegmentedControl alloc] initWithItems:_items];
[control addTarget:self action:@selector(handleSegmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged];
- control.frame = cell.contentView.bounds;
+ control.frame = CGRectMake( 4, 4, cell.contentView.bounds.size.width - 8, cell.contentView.bounds.size.height - 8);
control.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- control.segmentedControlStyle = UISegmentedControlStyleBar;
control.selectedSegmentIndex = _selected;
control.tag = 4321;
-
[cell.contentView addSubview:control];
- return cell;
+
}
- (BOOL)canTakeFocus {
diff --git a/quickdialog/QSelectItemElement.h b/Classes/Forms/QSelectItemElement.h
similarity index 60%
rename from quickdialog/QSelectItemElement.h
rename to Classes/Forms/QSelectItemElement.h
index 5b190c1d..516936dc 100644
--- a/quickdialog/QSelectItemElement.h
+++ b/Classes/Forms/QSelectItemElement.h
@@ -6,22 +6,21 @@
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
-#import "QLabelElement.h"
-#import "QuickDialogTableView.h"
-#import "QLabelElement.h"
-#import "QSelectSection.h"
+#import
+
+@class QSelectSection;
+
@interface QSelectItemElement : QLabelElement
{
- NSUInteger _index;
- __weak QSelectSection *_selectSection;
}
+
+
@property(nonatomic, weak) QSelectSection *selectSection;
@property(nonatomic) NSUInteger index;
@property(nonatomic, strong) UIImage *checkmarkImage;
@property(nonatomic, copy) NSString *checkmarkImageNamed;
-
-- (QSelectItemElement *)initWithIndex:(NSUInteger)integer selectSection:(QSelectSection *)section;
+- (instancetype)initWithIndex:(NSUInteger)integer selectSection:(QSelectSection *)section;
@end
diff --git a/quickdialog/QSelectItemElement.m b/Classes/Forms/QSelectItemElement.m
similarity index 63%
rename from quickdialog/QSelectItemElement.m
rename to Classes/Forms/QSelectItemElement.m
index 24b7a339..6987053f 100644
--- a/quickdialog/QSelectItemElement.m
+++ b/Classes/Forms/QSelectItemElement.m
@@ -6,20 +6,20 @@
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
+#import "QSelectSection.h"
+#import "QSelectItemElement.h"
+
@implementation QSelectItemElement {
UIImage *_checkmarkImage;
}
-@synthesize selectSection = _selectSection;
-@synthesize index = _index;
-@synthesize checkmarkImage = _checkmarkImage;
-- (QSelectItemElement *)initWithIndex:(NSUInteger)index selectSection:(QSelectSection *)section
+- (instancetype)initWithIndex:(NSUInteger)index selectSection:(QSelectSection *)section
{
if (self = [super init]) {
- _selectSection = section;
+ self.selectSection = section;
_index = index;
- _title = [[_selectSection.items objectAtIndex:_index] description];
+ _title = [self.selectSection.items[_index] description];
}
return self;
}
@@ -30,31 +30,31 @@ -(void)setCheckmarkImageNamed:(NSString *)name {
}
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller
+- (void)setCurrentCell:(UITableViewCell *)cell
{
- UITableViewCell *cell = [super getCellForTableView:tableView controller:controller];
+ super.currentCell = cell;
cell.selectionStyle = self.enabled ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone;
- if ([_selectSection.selectedIndexes containsObject:[NSNumber numberWithUnsignedInteger:_index]] ) {
+ if ([self.selectSection.selectedIndexes containsObject:@(_index)] ) {
[self updateCell:cell];
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
- return cell;
}
+
- (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller indexPath:(NSIndexPath *)indexPath
{
[super selected:tableView controller:controller indexPath:indexPath];
- NSNumber *numberIndex = [NSNumber numberWithUnsignedInteger:_index];
+ NSNumber *numberIndex = @(_index);
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
- if (_selectSection.multipleAllowed)
+ if (self.selectSection.multipleAllowed)
{
- if ([_selectSection.selectedIndexes containsObject:numberIndex]) {
+ if ([self.selectSection.selectedIndexes containsObject:numberIndex]) {
selectedCell.accessoryType = UITableViewCellAccessoryNone;
selectedCell.accessoryView = nil;
- [_selectSection.selectedIndexes removeObject:numberIndex];
+ [self.selectSection.selectedIndexes removeObject:numberIndex];
} else {
if (self.checkmarkImage==nil){
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
@@ -63,12 +63,12 @@ - (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogContro
[view sizeToFit];
selectedCell.accessoryView = view;
}
- [_selectSection.selectedIndexes addObject:numberIndex];
+ [self.selectSection.selectedIndexes addObject:numberIndex];
}
} else {
- if (![_selectSection.selectedIndexes containsObject:numberIndex])
+ if (![self.selectSection.selectedIndexes containsObject:numberIndex])
{
- NSNumber *oldCellRowNumber = [_selectSection.selectedIndexes count] > 0 ? [_selectSection.selectedIndexes objectAtIndex:0] : nil;
+ NSNumber *oldCellRowNumber = [self.selectSection.selectedIndexes count] > 0 ? self.selectSection.selectedIndexes[0] : nil;
if (oldCellRowNumber)
{
UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:
@@ -77,14 +77,14 @@ - (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogContro
oldCell.accessoryType = UITableViewCellAccessoryNone;
oldCell.accessoryView = nil;
- [_selectSection.selectedIndexes removeObject:oldCellRowNumber];
+ [self.selectSection.selectedIndexes removeObject:oldCellRowNumber];
[oldCell setNeedsDisplay];
}
[self updateCell:selectedCell];
- [_selectSection.selectedIndexes addObject:numberIndex];
+ self.selectSection.selectedIndexes = @[numberIndex].mutableCopy;
} else {
- if (_selectSection.deselectAllowed) {
- [_selectSection.selectedIndexes removeObject:numberIndex];
+ if (self.selectSection.deselectAllowed) {
+ [self.selectSection.selectedIndexes removeObject:numberIndex];
selectedCell.accessoryType = UITableViewCellAccessoryNone;
selectedCell.accessoryView = nil;
}
@@ -92,8 +92,8 @@ - (void)selected:(QuickDialogTableView *)tableView controller:(QuickDialogContro
}
}
- if (_selectSection.onSelected) {
- _selectSection.onSelected();
+ if (self.selectSection.onSelected) {
+ self.selectSection.onSelected();
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
diff --git a/quickdialog/QSelectSection.h b/Classes/Forms/QSelectSection.h
similarity index 56%
rename from quickdialog/QSelectSection.h
rename to Classes/Forms/QSelectSection.h
index ebd9d41c..b9197621 100644
--- a/quickdialog/QSelectSection.h
+++ b/Classes/Forms/QSelectSection.h
@@ -6,8 +6,8 @@
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
-#import "QSection.h"
-#import "QDynamicDataSection.h"
+#import
+
@interface QSelectSection : QDynamicDataSection
{
@@ -17,7 +17,6 @@
@property(nonatomic, strong) NSArray *items;
@property (nonatomic, strong) NSMutableArray *selectedIndexes;
@property (nonatomic, readonly) NSArray *selectedItems;
-
@property (nonatomic) BOOL multipleAllowed;
@property(nonatomic, copy) void (^onSelected)(void);
@@ -25,12 +24,12 @@
@property(nonatomic) BOOL deselectAllowed;
-- (id)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected;
-- (id)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected title:(NSString *)title;
-- (id)initWithItems:(NSArray *)stringArray selectedItems:(NSArray *)selectedItems title:(NSString *)title;
+- (instancetype)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected;
+- (instancetype)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected title:(NSString *)title;
+- (instancetype)initWithItems:(NSArray *)stringArray selectedItems:(NSArray *)selectedItems title:(NSString *)title;
-- (id)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected;
-- (id)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected title:(NSString *)title;
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected;
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected title:(NSString *)title;
- (void)addOption:(NSString *)option;
- (void)insertOption:(NSString *)option atIndex:(NSUInteger)index;
diff --git a/quickdialog/QSelectSection.m b/Classes/Forms/QSelectSection.m
similarity index 67%
rename from quickdialog/QSelectSection.m
rename to Classes/Forms/QSelectSection.m
index 1ec98876..dd26bacb 100644
--- a/quickdialog/QSelectSection.m
+++ b/Classes/Forms/QSelectSection.m
@@ -7,16 +7,16 @@
//
#import "QSelectSection.h"
-#import "QuickDialog.h"
+#import "QSelectItemElement.h"
+
+@interface QSelectSection ()
+@property(nonatomic, strong) NSMutableArray *selected;
+@end
@implementation QSelectSection {
}
-@synthesize selectedIndexes = _selected;
-@synthesize multipleAllowed = _multipleAllowed;
-@synthesize onSelected = _onSelected;
-
- (id)init {
self = [super init];
if (self) {
@@ -28,18 +28,18 @@ - (id)init {
return self;
}
-- (QSelectSection *)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected
+- (instancetype)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected
{
return [self initWithItems:stringArray selectedIndexes:selected title:nil];
}
-- (QSelectSection *)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected title:(NSString *)title
+- (instancetype)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArray *)selected title:(NSString *)title
{
if (self = [super initWithTitle:title])
{
- _items = [stringArray mutableCopy];
- _selected = selected ? [selected mutableCopy] : [NSMutableArray array];
- _multipleAllowed = (_selected.count > 1);
+ self.items = [stringArray mutableCopy];
+ self.selected = selected ? [selected mutableCopy] : [NSMutableArray array];
+ self.multipleAllowed = (_selected.count > 1);
[self createElements];
}
@@ -47,28 +47,28 @@ - (QSelectSection *)initWithItems:(NSArray *)stringArray selectedIndexes:(NSArra
return self;
}
-- (QSelectSection *)initWithItems:(NSArray *)items selectedItems:(NSArray *)selectedItems title:(NSString *)title
+- (instancetype)initWithItems:(NSArray *)items selectedItems:(NSArray *)selectedItems title:(NSString *)title
{
NSMutableArray *selectedIndexes = [NSMutableArray array];
for (id item in selectedItems) {
NSUInteger index = [items indexOfObject:item];
if (index != NSNotFound) {
- [selectedIndexes addObject:[NSNumber numberWithUnsignedInteger:index]];
+ [selectedIndexes addObject:@(index)];
}
}
return [self initWithItems:items selectedIndexes:selectedIndexes title:title];
}
-- (QSelectSection *)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected
{
return [self initWithItems:stringArray selected:selected title:nil];
}
-- (QSelectSection *)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected title:(NSString *)title
+- (instancetype)initWithItems:(NSArray *)stringArray selected:(NSUInteger)selected title:(NSString *)title
{
return [self initWithItems:stringArray
- selectedIndexes:[NSArray arrayWithObject:[NSNumber numberWithUnsignedInteger:selected]]
+ selectedIndexes:@[@(selected)]
title:title];
}
@@ -88,7 +88,7 @@ - (NSArray *)selectedItems
{
NSMutableArray *selectedItems = [NSMutableArray array];
for (NSNumber *index in _selected) {
- [selectedItems addObject:[_items objectAtIndex:[index unsignedIntegerValue]]];
+ [selectedItems addObject:_items[[index unsignedIntegerValue]]];
}
return selectedItems;
}
diff --git a/quickdialog/QFloatElement.h b/Classes/Forms/QSliderElement.h
similarity index 72%
rename from quickdialog/QFloatElement.h
rename to Classes/Forms/QSliderElement.h
index e6efb368..b7e147af 100644
--- a/quickdialog/QFloatElement.h
+++ b/Classes/Forms/QSliderElement.h
@@ -12,25 +12,17 @@
// permissions and limitations under the License.
//
-#import "QuickDialogTableView.h"
-#import "QLabelElement.h"
-
+#import
/**
QFloatElement: shows an slider control.
*/
-@interface QFloatElement : QLabelElement {
+@interface QSliderElement : QLabelElement
- float _floatValue;
- float _minimumValue;
- float _maximumValue;
-}
-
@property(nonatomic, assign) float floatValue;
@property(nonatomic, assign) float minimumValue;
@property(nonatomic, assign) float maximumValue;
-- (QFloatElement *)init;
-- (QFloatElement *)initWithTitle:(NSString *)string value:(float)value;
-- (QElement *)initWithValue:(float)value;
+- (instancetype)init;
+- (instancetype)initWithTitle:(NSString *)string value:(float)value;
@end
diff --git a/quickdialog/QFloatElement.m b/Classes/Forms/QSliderElement.m
similarity index 61%
rename from quickdialog/QFloatElement.m
rename to Classes/Forms/QSliderElement.m
index 6bca3d98..1167ae71 100644
--- a/quickdialog/QFloatElement.m
+++ b/Classes/Forms/QSliderElement.m
@@ -12,46 +12,38 @@
// permissions and limitations under the License.
//
-#import "QFloatElement.h"
-#import "QFloatTableViewCell.h"
+#import "QSliderElement.h"
+#import "QSliderTableViewCell.h"
-@implementation QFloatElement
+@implementation QSliderElement
-@synthesize floatValue = _floatValue;
-@synthesize minimumValue = _minimumValue;
-@synthesize maximumValue = _maximumValue;
-- (QFloatElement *)init {
- return [self initWithValue:0.0];
-}
-
-- (QFloatElement *)initWithTitle:(NSString *)title value:(float)value {
- self = [super initWithTitle:title Value:nil] ;
- if (self) {
- _floatValue = value;
- _minimumValue = 0.0;
- _maximumValue = 1.0;
+- (instancetype)init {
+ self = [super init];
+ if (self!=nil)
+ {
+ self.cellClass = [QSliderTableViewCell class];
self.enabled = YES;
+ self.minimumValue = 0.0;
+ self.maximumValue = 1.0;
}
return self;
}
-
-- (QElement *)initWithValue:(float)value {
- self = [super init];
+- (instancetype)initWithTitle:(NSString *)title value:(float)value {
+ self = [self init] ;
if (self) {
- _floatValue = value;
- _minimumValue = 0.0;
- _maximumValue = 1.0;
- self.enabled = YES;
+ self.title = title;
+ self.floatValue = value;
}
return self;
}
+
- (void)fetchValueIntoObject:(id)obj {
if (_key==nil)
return;
- [obj setValue:[NSNumber numberWithFloat:_floatValue] forKey:_key];
+ [obj setValue:@(_floatValue) forKey:_key];
}
- (void)valueChanged:(UISlider *)slider {
@@ -60,21 +52,20 @@ - (void)valueChanged:(UISlider *)slider {
[self handleEditingChanged];
}
-- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller {
- QFloatTableViewCell *cell = [[QFloatTableViewCell alloc] initWithFrame:CGRectZero];
-
+- (void)setCurrentCell:(UITableViewCell *)currentCell
+{
+ super.currentCell = currentCell;
+ QSliderTableViewCell *cell = (QSliderTableViewCell *) currentCell;
[cell.slider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
- cell.slider.minimumValue = _minimumValue;
- cell.slider.maximumValue = _maximumValue;
- cell.slider.value = _floatValue;
+ cell.slider.minimumValue = self.minimumValue;
+ cell.slider.maximumValue = self.maximumValue;
+ cell.slider.value = self.floatValue;
cell.textLabel.text = _title;
cell.detailTextLabel.text = [_value description];
cell.imageView.image = _image;
cell.accessoryType = self.accessoryType != UITableViewCellAccessoryNone ? self.accessoryType : ( self.sections!= nil || self.controllerAction!=nil ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone);
cell.selectionStyle = self.sections!= nil || self.controllerAction!=nil ? UITableViewCellSelectionStyleBlue: UITableViewCellSelectionStyleNone;
-
- return cell;
}
- (void)setNilValueForKey:(NSString *)key;
diff --git a/quickdialog/QFloatTableViewCell.h b/Classes/Forms/QSliderTableViewCell.h
similarity index 66%
rename from quickdialog/QFloatTableViewCell.h
rename to Classes/Forms/QSliderTableViewCell.h
index 5a8dc597..108db61a 100644
--- a/quickdialog/QFloatTableViewCell.h
+++ b/Classes/Forms/QSliderTableViewCell.h
@@ -6,9 +6,9 @@
//
//
-#import "QTableViewCell.h"
+#import
-@interface QFloatTableViewCell : QTableViewCell
+@interface QSliderTableViewCell : QTableViewCell
@property (nonatomic, strong, readonly) UISlider *slider;
diff --git a/Classes/Forms/QSliderTableViewCell.m b/Classes/Forms/QSliderTableViewCell.m
new file mode 100644
index 00000000..135127eb
--- /dev/null
+++ b/Classes/Forms/QSliderTableViewCell.m
@@ -0,0 +1,35 @@
+//
+// QSliderTableViewCell.m
+// QuickDialog
+//
+// Created by Bart Vandendriessche on 29/04/13.
+//
+//
+
+#import "QSliderTableViewCell.h"
+
+@interface QSliderTableViewCell ()
+
+@property (nonatomic, strong, readwrite) UISlider *slider;
+
+@end
+
+@implementation QSliderTableViewCell
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithReuseIdentifier:@"QSliderTableViewCell"];
+ if (self) {
+ self.slider = [[UISlider alloc] initWithFrame:CGRectZero];
+ self.selectionStyle = UITableViewCellSelectionStyleNone;
+ [self.contentView addSubview:self.slider];
+ }
+ return self;
+}
+
+- (void)layoutSubviews {
+ [super layoutSubviews];
+
+ self.slider.frame = self.detailTextLabel.frame;
+}
+
+@end
diff --git a/Example/Podfile b/Example/Podfile
new file mode 100644
index 00000000..64d692f3
--- /dev/null
+++ b/Example/Podfile
@@ -0,0 +1,9 @@
+# Uncomment this line to define a global platform for your project
+# platform :ios, '7.0'
+
+target "SampleApp" do
+ pod "QuickDialog/Core", :path => "../"
+ pod "QuickDialog/Forms", :path => "../"
+ pod "QuickDialog/Extras", :path => "../"
+end
+
diff --git a/Example/Podfile.lock b/Example/Podfile.lock
new file mode 100644
index 00000000..e9dd68c8
--- /dev/null
+++ b/Example/Podfile.lock
@@ -0,0 +1,20 @@
+PODS:
+ - QuickDialog/Core (2.0.0)
+ - QuickDialog/Extras (2.0.0):
+ - QuickDialog/Forms
+ - QuickDialog/Forms (2.0.0):
+ - QuickDialog/Core
+
+DEPENDENCIES:
+ - QuickDialog/Core (from `../`)
+ - QuickDialog/Extras (from `../`)
+ - QuickDialog/Forms (from `../`)
+
+EXTERNAL SOURCES:
+ QuickDialog:
+ :path: ../
+
+SPEC CHECKSUMS:
+ QuickDialog: ef7e10d9f7c0570c89e70febda84048749e97ff6
+
+COCOAPODS: 0.33.1
diff --git a/Example/Pods/Headers/QuickDialog/NSMutableArray+MoveObject.h b/Example/Pods/Headers/QuickDialog/NSMutableArray+MoveObject.h
new file mode 120000
index 00000000..5629425a
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/NSMutableArray+MoveObject.h
@@ -0,0 +1 @@
+../../../../Classes/Core/NSMutableArray+MoveObject.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QAppearance.h b/Example/Pods/Headers/QuickDialog/QAppearance.h
new file mode 120000
index 00000000..a58c1007
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QAppearance.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QAppearance.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QBadgeElement.h b/Example/Pods/Headers/QuickDialog/QBadgeElement.h
new file mode 120000
index 00000000..252b4119
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QBadgeElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QBadgeElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QBadgeLabel.h b/Example/Pods/Headers/QuickDialog/QBadgeLabel.h
new file mode 120000
index 00000000..e4928016
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QBadgeLabel.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QBadgeLabel.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QBadgeTableCell.h b/Example/Pods/Headers/QuickDialog/QBadgeTableCell.h
new file mode 120000
index 00000000..083b3121
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QBadgeTableCell.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QBadgeTableCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QBindingEvaluator.h b/Example/Pods/Headers/QuickDialog/QBindingEvaluator.h
new file mode 120000
index 00000000..590988ee
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QBindingEvaluator.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QBindingEvaluator.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QBooleanElement.h b/Example/Pods/Headers/QuickDialog/QBooleanElement.h
new file mode 120000
index 00000000..cff9b18c
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QBooleanElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QBooleanElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QButtonElement.h b/Example/Pods/Headers/QuickDialog/QButtonElement.h
new file mode 120000
index 00000000..33adce16
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QButtonElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QButtonElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QColorPickerElement.h b/Example/Pods/Headers/QuickDialog/QColorPickerElement.h
new file mode 120000
index 00000000..23374691
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QColorPickerElement.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QColorPickerElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDateEntryTableViewCell.h b/Example/Pods/Headers/QuickDialog/QDateEntryTableViewCell.h
new file mode 120000
index 00000000..0ddb4856
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDateEntryTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QDateEntryTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDateInlineTableViewCell.h b/Example/Pods/Headers/QuickDialog/QDateInlineTableViewCell.h
new file mode 120000
index 00000000..4d512672
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDateInlineTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QDateInlineTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDateTimeElement.h b/Example/Pods/Headers/QuickDialog/QDateTimeElement.h
new file mode 120000
index 00000000..792609d5
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDateTimeElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QDateTimeElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDateTimeInlineElement.h b/Example/Pods/Headers/QuickDialog/QDateTimeInlineElement.h
new file mode 120000
index 00000000..2018c8b5
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDateTimeInlineElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QDateTimeInlineElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDecimalElement.h b/Example/Pods/Headers/QuickDialog/QDecimalElement.h
new file mode 120000
index 00000000..c1a7b273
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDecimalElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QDecimalElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDecimalTableViewCell.h b/Example/Pods/Headers/QuickDialog/QDecimalTableViewCell.h
new file mode 120000
index 00000000..b1510f04
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDecimalTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QDecimalTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QDynamicDataSection.h b/Example/Pods/Headers/QuickDialog/QDynamicDataSection.h
new file mode 120000
index 00000000..fd1f7a85
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QDynamicDataSection.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QDynamicDataSection.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QElement+Appearance.h b/Example/Pods/Headers/QuickDialog/QElement+Appearance.h
new file mode 120000
index 00000000..8df916f3
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QElement+Appearance.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QElement+Appearance.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QElement.h b/Example/Pods/Headers/QuickDialog/QElement.h
new file mode 120000
index 00000000..e3111e5d
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QEmptyListElement.h b/Example/Pods/Headers/QuickDialog/QEmptyListElement.h
new file mode 120000
index 00000000..3741fd87
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QEmptyListElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QEmptyListElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QEntryElement.h b/Example/Pods/Headers/QuickDialog/QEntryElement.h
new file mode 120000
index 00000000..aea8c274
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QEntryElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QEntryElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QEntryTableViewCell.h b/Example/Pods/Headers/QuickDialog/QEntryTableViewCell.h
new file mode 120000
index 00000000..304aeb2c
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QEntryTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QEntryTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QFlatAppearance.h b/Example/Pods/Headers/QuickDialog/QFlatAppearance.h
new file mode 120000
index 00000000..84d3d026
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QFlatAppearance.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QFlatAppearance.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QImageElement.h b/Example/Pods/Headers/QuickDialog/QImageElement.h
new file mode 120000
index 00000000..7c5e953e
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QImageElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QImageElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QImageTableViewCell.h b/Example/Pods/Headers/QuickDialog/QImageTableViewCell.h
new file mode 120000
index 00000000..78cb4b81
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QImageTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QImageTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QLabelElement.h b/Example/Pods/Headers/QuickDialog/QLabelElement.h
new file mode 120000
index 00000000..ca5d0d85
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QLabelElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QLabelElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QLoadingElement.h b/Example/Pods/Headers/QuickDialog/QLoadingElement.h
new file mode 120000
index 00000000..ecca451e
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QLoadingElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QLoadingElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QMailElement.h b/Example/Pods/Headers/QuickDialog/QMailElement.h
new file mode 120000
index 00000000..2cc1c0de
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QMailElement.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QMailElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QMapAnnotation.h b/Example/Pods/Headers/QuickDialog/QMapAnnotation.h
new file mode 120000
index 00000000..71c4d69b
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QMapAnnotation.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QMapAnnotation.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QMapElement.h b/Example/Pods/Headers/QuickDialog/QMapElement.h
new file mode 120000
index 00000000..17db821b
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QMapElement.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QMapElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QMapViewController.h b/Example/Pods/Headers/QuickDialog/QMapViewController.h
new file mode 120000
index 00000000..e6d84706
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QMapViewController.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QMapViewController.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QMultilineElement.h b/Example/Pods/Headers/QuickDialog/QMultilineElement.h
new file mode 120000
index 00000000..7be8c6fb
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QMultilineElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QMultilineElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QMultilineTextViewController.h b/Example/Pods/Headers/QuickDialog/QMultilineTextViewController.h
new file mode 120000
index 00000000..95d926ce
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QMultilineTextViewController.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QMultilineTextViewController.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QProgressElement.h b/Example/Pods/Headers/QuickDialog/QProgressElement.h
new file mode 120000
index 00000000..4240f0ce
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QProgressElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QProgressElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QRadioElement.h b/Example/Pods/Headers/QuickDialog/QRadioElement.h
new file mode 120000
index 00000000..ea459f9f
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QRadioElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QRadioElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QRadioItemElement.h b/Example/Pods/Headers/QuickDialog/QRadioItemElement.h
new file mode 120000
index 00000000..918354cb
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QRadioItemElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QRadioItemElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QRadioSection.h b/Example/Pods/Headers/QuickDialog/QRadioSection.h
new file mode 120000
index 00000000..565ac7e5
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QRadioSection.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QRadioSection.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QRootBuilder.h b/Example/Pods/Headers/QuickDialog/QRootBuilder.h
new file mode 120000
index 00000000..f905c157
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QRootBuilder.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QRootBuilder.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QRootElement+JsonBuilder.h b/Example/Pods/Headers/QuickDialog/QRootElement+JsonBuilder.h
new file mode 120000
index 00000000..e107e1dc
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QRootElement+JsonBuilder.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QRootElement+JsonBuilder.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QRootElement.h b/Example/Pods/Headers/QuickDialog/QRootElement.h
new file mode 120000
index 00000000..6de3713d
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QRootElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QRootElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSection.h b/Example/Pods/Headers/QuickDialog/QSection.h
new file mode 120000
index 00000000..61c21808
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSection.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QSection.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSegmentedElement.h b/Example/Pods/Headers/QuickDialog/QSegmentedElement.h
new file mode 120000
index 00000000..1bc09f94
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSegmentedElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QSegmentedElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSelectItemElement.h b/Example/Pods/Headers/QuickDialog/QSelectItemElement.h
new file mode 120000
index 00000000..0001193b
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSelectItemElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QSelectItemElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSelectSection.h b/Example/Pods/Headers/QuickDialog/QSelectSection.h
new file mode 120000
index 00000000..6092f84a
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSelectSection.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QSelectSection.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSliderElement.h b/Example/Pods/Headers/QuickDialog/QSliderElement.h
new file mode 120000
index 00000000..4babc7ab
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSliderElement.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QSliderElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSliderTableViewCell.h b/Example/Pods/Headers/QuickDialog/QSliderTableViewCell.h
new file mode 120000
index 00000000..1df37a11
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSliderTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Forms/QSliderTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QSortingSection.h b/Example/Pods/Headers/QuickDialog/QSortingSection.h
new file mode 120000
index 00000000..a487a5fb
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QSortingSection.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QSortingSection.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QTableViewCell.h b/Example/Pods/Headers/QuickDialog/QTableViewCell.h
new file mode 120000
index 00000000..3eb79372
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QTableViewCell.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QTableViewCell.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QTextElement.h b/Example/Pods/Headers/QuickDialog/QTextElement.h
new file mode 120000
index 00000000..66b5b03f
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QTextElement.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QTextElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QTextField.h b/Example/Pods/Headers/QuickDialog/QTextField.h
new file mode 120000
index 00000000..cbcf0082
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QTextField.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QTextField.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QWebElement.h b/Example/Pods/Headers/QuickDialog/QWebElement.h
new file mode 120000
index 00000000..f07910b4
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QWebElement.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QWebElement.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QWebViewController.h b/Example/Pods/Headers/QuickDialog/QWebViewController.h
new file mode 120000
index 00000000..1ce86327
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QWebViewController.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/QWebViewController.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialog.h b/Example/Pods/Headers/QuickDialog/QuickDialog.h
new file mode 120000
index 00000000..f16528f3
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialog.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialog.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogController+Animations.h b/Example/Pods/Headers/QuickDialog/QuickDialogController+Animations.h
new file mode 120000
index 00000000..5a18d0d8
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogController+Animations.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogController+Animations.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogController+Helpers.h b/Example/Pods/Headers/QuickDialog/QuickDialogController+Helpers.h
new file mode 120000
index 00000000..79a5783c
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogController+Helpers.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogController+Helpers.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogController+Navigation.h b/Example/Pods/Headers/QuickDialog/QuickDialogController+Navigation.h
new file mode 120000
index 00000000..c36562aa
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogController+Navigation.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogController+Navigation.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogController.h b/Example/Pods/Headers/QuickDialog/QuickDialogController.h
new file mode 120000
index 00000000..6a44605a
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogController.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogController.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogDataSource.h b/Example/Pods/Headers/QuickDialog/QuickDialogDataSource.h
new file mode 120000
index 00000000..62790ccd
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogDataSource.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogDataSource.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogDelegate.h b/Example/Pods/Headers/QuickDialog/QuickDialogDelegate.h
new file mode 120000
index 00000000..610c79c8
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogDelegate.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogDelegate.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogEntryElementDelegate.h b/Example/Pods/Headers/QuickDialog/QuickDialogEntryElementDelegate.h
new file mode 120000
index 00000000..a597722a
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogEntryElementDelegate.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogEntryElementDelegate.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogTableDelegate.h b/Example/Pods/Headers/QuickDialog/QuickDialogTableDelegate.h
new file mode 120000
index 00000000..b5694395
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogTableDelegate.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogTableDelegate.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/QuickDialogTableView.h b/Example/Pods/Headers/QuickDialog/QuickDialogTableView.h
new file mode 120000
index 00000000..7f2428ae
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/QuickDialogTableView.h
@@ -0,0 +1 @@
+../../../../Classes/Core/QuickDialogTableView.h
\ No newline at end of file
diff --git a/Example/Pods/Headers/QuickDialog/UIColor+ColorUtilities.h b/Example/Pods/Headers/QuickDialog/UIColor+ColorUtilities.h
new file mode 120000
index 00000000..eee31d68
--- /dev/null
+++ b/Example/Pods/Headers/QuickDialog/UIColor+ColorUtilities.h
@@ -0,0 +1 @@
+../../../../Classes/Extras/UIColor+ColorUtilities.h
\ No newline at end of file
diff --git a/Example/Pods/Local Podspecs/QuickDialog.podspec b/Example/Pods/Local Podspecs/QuickDialog.podspec
new file mode 100644
index 00000000..35f0c03f
--- /dev/null
+++ b/Example/Pods/Local Podspecs/QuickDialog.podspec
@@ -0,0 +1,49 @@
+#
+# Be sure to run `pod lib lint NAME.podspec' to ensure this is a
+# valid spec and remove all comments before submitting the spec.
+#
+# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
+#
+Pod::Spec.new do |s|
+ s.name = "QuickDialog"
+ s.version = "2.0.0"
+ s.summary = "Quick and easy dialog screens for iOS."
+ s.description = <<-DESC
+ QuickDialog allows you to create HIG-compliant iOS forms for your apps without
+ having to directly deal with UITableViews, delegates and data sources. Fast
+ and efficient, you can create forms with multiple text fields, or with
+ thousands of items with no sweat!
+ DESC
+ s.homepage = "http://escoz.com/quickdialog"
+ #s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
+ s.license = 'Apache License, Version 2.0'
+ s.author = { "Eduardo Scoz" => "eduardoscoz@gmail.com" }
+ s.source = { :git => "https://github.com/escoz/QuickDialog.git", :tag => s.version.to_s }
+ s.social_media_url = 'https://twitter.com/escoz'
+
+ s.platform = :ios, '7.0'
+ s.requires_arc = true
+
+ s.default_subspec = "Forms"
+
+ s.subspec "Core" do |sp|
+ sp.source_files = "Classes/Core/*.m"
+ sp.public_header_files = "Classes/Core/*.h"
+ sp.resources = ["Assets/Core/*"]
+ end
+
+ s.subspec "Forms" do |sp|
+ sp.source_files = "Classes/Forms/*.m"
+ sp.public_header_files = "Classes/Forms/*.h"
+ sp.dependency "QuickDialog/Core"
+ end
+
+ s.subspec "Extras" do |sp|
+ sp.source_files = "Classes/Extras/*.m"
+ sp.public_header_files = "Classes/Extras/*.h"
+ sp.dependency 'QuickDialog/Forms'
+ end
+
+ # s.public_header_files = 'Classes/**/*.h'
+ # s.frameworks = 'SomeFramework', 'AnotherFramework'
+end
diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock
new file mode 100644
index 00000000..e9dd68c8
--- /dev/null
+++ b/Example/Pods/Manifest.lock
@@ -0,0 +1,20 @@
+PODS:
+ - QuickDialog/Core (2.0.0)
+ - QuickDialog/Extras (2.0.0):
+ - QuickDialog/Forms
+ - QuickDialog/Forms (2.0.0):
+ - QuickDialog/Core
+
+DEPENDENCIES:
+ - QuickDialog/Core (from `../`)
+ - QuickDialog/Extras (from `../`)
+ - QuickDialog/Forms (from `../`)
+
+EXTERNAL SOURCES:
+ QuickDialog:
+ :path: ../
+
+SPEC CHECKSUMS:
+ QuickDialog: ef7e10d9f7c0570c89e70febda84048749e97ff6
+
+COCOAPODS: 0.33.1
diff --git a/Example/Pods/Pods-SampleApp-QuickDialog-Private.xcconfig b/Example/Pods/Pods-SampleApp-QuickDialog-Private.xcconfig
new file mode 100644
index 00000000..c674f087
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-QuickDialog-Private.xcconfig
@@ -0,0 +1,5 @@
+#include "Pods-SampleApp-QuickDialog.xcconfig"
+GCC_PREPROCESSOR_DEFINITIONS = COCOAPODS=1
+HEADER_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/QuickDialog" "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/QuickDialog"
+OTHER_LDFLAGS = -ObjC
+PODS_ROOT = ${SRCROOT}
\ No newline at end of file
diff --git a/Example/Pods/Pods-SampleApp-QuickDialog-dummy.m b/Example/Pods/Pods-SampleApp-QuickDialog-dummy.m
new file mode 100644
index 00000000..7b72ad9e
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-QuickDialog-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SampleApp_QuickDialog : NSObject
+@end
+@implementation PodsDummy_Pods_SampleApp_QuickDialog
+@end
diff --git a/Example/Pods/Pods-SampleApp-QuickDialog-prefix.pch b/Example/Pods/Pods-SampleApp-QuickDialog-prefix.pch
new file mode 100644
index 00000000..eca864df
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-QuickDialog-prefix.pch
@@ -0,0 +1,5 @@
+#ifdef __OBJC__
+#import
+#endif
+
+#import "Pods-SampleApp-environment.h"
diff --git a/Example/Pods/Pods-SampleApp-QuickDialog.xcconfig b/Example/Pods/Pods-SampleApp-QuickDialog.xcconfig
new file mode 100644
index 00000000..e69de29b
diff --git a/Example/Pods/Pods-SampleApp-acknowledgements.markdown b/Example/Pods/Pods-SampleApp-acknowledgements.markdown
new file mode 100644
index 00000000..403ceb52
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-acknowledgements.markdown
@@ -0,0 +1,26 @@
+# Acknowledgements
+This application makes use of the following third party libraries:
+
+## QuickDialog
+
+Copyright (c) 2014 Eduardo Scoz
+
+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.
+
+Generated by CocoaPods - http://cocoapods.org
diff --git a/Example/Pods/Pods-SampleApp-acknowledgements.plist b/Example/Pods/Pods-SampleApp-acknowledgements.plist
new file mode 100644
index 00000000..05072e92
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-acknowledgements.plist
@@ -0,0 +1,56 @@
+
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ This application makes use of the following third party libraries:
+ Title
+ Acknowledgements
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Copyright (c) 2014 Eduardo Scoz <escoz@ebay.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.
+
+ Title
+ QuickDialog
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Generated by CocoaPods - http://cocoapods.org
+ Title
+
+ Type
+ PSGroupSpecifier
+
+
+ StringsTable
+ Acknowledgements
+ Title
+ Acknowledgements
+
+
diff --git a/Example/Pods/Pods-SampleApp-dummy.m b/Example/Pods/Pods-SampleApp-dummy.m
new file mode 100644
index 00000000..ad113e09
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SampleApp : NSObject
+@end
+@implementation PodsDummy_Pods_SampleApp
+@end
diff --git a/Example/Pods/Pods-SampleApp-environment.h b/Example/Pods/Pods-SampleApp-environment.h
new file mode 100644
index 00000000..4fe8228e
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-environment.h
@@ -0,0 +1,26 @@
+
+// To check if a library is compiled with CocoaPods you
+// can use the `COCOAPODS` macro definition which is
+// defined in the xcconfigs so it is available in
+// headers also when they are imported in the client
+// project.
+
+
+// QuickDialog/Core
+#define COCOAPODS_POD_AVAILABLE_QuickDialog_Core
+#define COCOAPODS_VERSION_MAJOR_QuickDialog_Core 2
+#define COCOAPODS_VERSION_MINOR_QuickDialog_Core 0
+#define COCOAPODS_VERSION_PATCH_QuickDialog_Core 0
+
+// QuickDialog/Extras
+#define COCOAPODS_POD_AVAILABLE_QuickDialog_Extras
+#define COCOAPODS_VERSION_MAJOR_QuickDialog_Extras 2
+#define COCOAPODS_VERSION_MINOR_QuickDialog_Extras 0
+#define COCOAPODS_VERSION_PATCH_QuickDialog_Extras 0
+
+// QuickDialog/Forms
+#define COCOAPODS_POD_AVAILABLE_QuickDialog_Forms
+#define COCOAPODS_VERSION_MAJOR_QuickDialog_Forms 2
+#define COCOAPODS_VERSION_MINOR_QuickDialog_Forms 0
+#define COCOAPODS_VERSION_PATCH_QuickDialog_Forms 0
+
diff --git a/Example/Pods/Pods-SampleApp-resources.sh b/Example/Pods/Pods-SampleApp-resources.sh
new file mode 100755
index 00000000..0c5a10d9
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp-resources.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+set -e
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+install_resource()
+{
+ case $1 in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
+ ;;
+ *.framework)
+ echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\""
+ xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\""
+ xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd"
+ ;;
+ *.xcassets)
+ ;;
+ /*)
+ echo "$1"
+ echo "$1" >> "$RESOURCES_TO_COPY"
+ ;;
+ *)
+ echo "${PODS_ROOT}/$1"
+ echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+install_resource "../../Assets/Core/qd_keyboardNext@2x.png"
+install_resource "../../Assets/Core/qd_keyboardPrevious@2x.png"
+
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]]; then
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ `xcrun --find actool` ] && [ `find . -name '*.xcassets' | wc -l` -ne 0 ]
+then
+ case "${TARGETED_DEVICE_FAMILY}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+ esac
+ find "${PWD}" -name "*.xcassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
diff --git a/Example/Pods/Pods-SampleApp.xcconfig b/Example/Pods/Pods-SampleApp.xcconfig
new file mode 100644
index 00000000..92fff22a
--- /dev/null
+++ b/Example/Pods/Pods-SampleApp.xcconfig
@@ -0,0 +1,5 @@
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
+HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/QuickDialog"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/QuickDialog"
+OTHER_LDFLAGS = -ObjC
+PODS_ROOT = ${SRCROOT}/Pods
\ No newline at end of file
diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..94bff882
--- /dev/null
+++ b/Example/Pods/Pods.xcodeproj/project.pbxproj
@@ -0,0 +1,727 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 03BEF9F4E51F46DEAAEEFC76 /* QDecimalTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DD182B54B6B4677920A0B47 /* QDecimalTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 0862B6D7BC904F3392373CAB /* QBadgeElement.m in Sources */ = {isa = PBXBuildFile; fileRef = EB63C88222A6422997A57C31 /* QBadgeElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 09C7A0D9E2764496ADC7783A /* QMapAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4291D358F27A467A9D9DCF44 /* QMapAnnotation.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 0A0E40DA0DD14C238CCE32D9 /* QBindingEvaluator.m in Sources */ = {isa = PBXBuildFile; fileRef = F1B41F8D4ABD4A6C84D4A2DB /* QBindingEvaluator.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 0EAB6AE6D3F44F89A565A79F /* QElement+Appearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 30FFA0B8A379463190E4D086 /* QElement+Appearance.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 0EC3AF4F5E2A47D1B73A13E8 /* QSliderTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A15BC5AA81FF48A5B855433C /* QSliderTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 12318BE0939C428291108D9B /* QuickDialogController+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E5802CC416416094DEB319 /* QuickDialogController+Helpers.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 15218018C146423C96C872E5 /* QButtonElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C400E86D9A0B4E8FACEF2D66 /* QButtonElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 166F14C5B46D42DA907EF462 /* QSliderElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A22BD4057D541288B65A575 /* QSliderElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 1D6E0AAB4FBC42C690602C76 /* QDynamicDataSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DAFE4F47E464E3C8AA24AE1 /* QDynamicDataSection.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 1E0C3FE25CB4404B8670F84C /* QuickDialogController+Navigation.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE60C7C500545F8A062141A /* QuickDialogController+Navigation.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 226B65E7BDFE45FBA36B037E /* QRadioSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 69E6E4701C5447D98F25B875 /* QRadioSection.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 29433123DDB8454F95153D98 /* QEntryElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 01AB653444424DEE873DA58B /* QEntryElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 2AD1D52166F14B25A639377E /* QWebElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D2339E1259149FC9772DBE6 /* QWebElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 3134B6C993E34847A63897E6 /* QSelectItemElement.m in Sources */ = {isa = PBXBuildFile; fileRef = AF173537F9174CF7A248913E /* QSelectItemElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 323C35A036804991B57D73BE /* QRadioItemElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FD27BBD0C1A40A2983BFC51 /* QRadioItemElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 32A72B40B61D407BB2933FA3 /* QEntryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = AB8253FA22AF4B5788D636B6 /* QEntryTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 344FCBF4F9714543BEB8EE70 /* QProgressElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C2E2A8719F824672A30F7577 /* QProgressElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 3599B15318E0449F8AC64DEA /* QMapElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D8A969D3C71439592ECC8CD /* QMapElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 36FE3C999FF047F3904544A7 /* QFlatAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 34909F1D2F6745F8AF717C16 /* QFlatAppearance.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 38030EF8A349459FBBDF35A9 /* QRootBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E82336FB4BC9467B87C25C5A /* QRootBuilder.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 411B09CC122345B3AF2A2089 /* Pods-SampleApp-QuickDialog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E4322DD6153E44CFB4B47CAA /* Pods-SampleApp-QuickDialog-dummy.m */; };
+ 45A8663A033E4EB99BCF8AB2 /* QTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 95EBE505E3BC45A091D9EC6F /* QTextField.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 4B056B68FDFE423D9FBE32D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85AE5C3BFB65497FB684293D /* Foundation.framework */; };
+ 522817BFF5EC47D8989B98E4 /* QLoadingElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 218593143FA6432B97C1FA93 /* QLoadingElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 559BC5525E694B8795B8B525 /* QTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 52BEECADB5124D4EBC4C75D1 /* QTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 5BD8D24697584D06B2482ADE /* QuickDialogController+Animations.m in Sources */ = {isa = PBXBuildFile; fileRef = C1ADD09CD66A4D5CAD8F336A /* QuickDialogController+Animations.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 5EF32E656C0F49D2A5999FC0 /* NSMutableArray+MoveObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD59A95C78742DEB169B603 /* NSMutableArray+MoveObject.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 6212EE378110462E890AF626 /* libPods-SampleApp-QuickDialog.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 82B33BD9986645EF8BB3B4CA /* libPods-SampleApp-QuickDialog.a */; };
+ 628E4892EBD04AE7BF220527 /* QBadgeLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B82F62BEB9E4E4F92BF2418 /* QBadgeLabel.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 661E19267BF944E4B34BF40A /* QElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 516F62BB06A24856B0D22788 /* QElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 6F309AF7773A4D6CB633237B /* QDecimalElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CC7095A18AE4F6FA4A5C15F /* QDecimalElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 6F9A0349DDE64AC09905E867 /* QSegmentedElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C6E6A6B8E8B24FDB8923FB21 /* QSegmentedElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 711C2EFBCF4B4BAF8852779C /* QMultilineTextViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 86718C6C67914557B1893BC7 /* QMultilineTextViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 7323E008F69849059531AAAD /* QImageTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 387B0E08AA5A4F74862BF5E9 /* QImageTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 78D49F2BAAC24FFEBC1BCD3F /* QuickDialogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4861EAEF45AC41F28E02F25D /* QuickDialogController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 79B29C82FBF34C51B4FD36F7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85AE5C3BFB65497FB684293D /* Foundation.framework */; };
+ 7E59C744704E4488B55FCB74 /* QSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E60DE9B3C464EEBBDE520CA /* QSection.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 8E36773EE52B4B56AB8A1558 /* QAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = C1EF26C1F7694B0B92D64A35 /* QAppearance.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 945D83CE47A44465982BCD79 /* QSelectSection.m in Sources */ = {isa = PBXBuildFile; fileRef = DCFB3902C7B84127AFDDF677 /* QSelectSection.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 97FB34837CF84B4D9675F711 /* QRadioElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A743D8D15A344A4BA9A3DE9 /* QRadioElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 9BF32960711B4EC89D05CAF2 /* QImageElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 06814C21842B4DDD9B358C9B /* QImageElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 9D071BBDC20C4A80BBE633D3 /* QWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE30409E2454467687EA29F4 /* QWebViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 9FF1C95C4424424582059813 /* QDateTimeInlineElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E54CCDEDCE846A29771B37C /* QDateTimeInlineElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ A5A9DF53CEA046CEBE470134 /* QDateInlineTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BF3EDC3DED2C4E2A86A2C326 /* QDateInlineTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ A87E6E392C6F4127BFA2F42D /* QBooleanElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D8BCD2B81354C069D538C1A /* QBooleanElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ ACCAE0D53D0F4CFAB2F9A07A /* QMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E57C5FF31124E5B809E6DB4 /* QMapViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ B6EF54FCAB7D440286E46793 /* QMultilineElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1424E36A2A6B45398D58A666 /* QMultilineElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ B9F9431FD18A4D658BDFC1A4 /* QSortingSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CEC319ECF52411781E4E6C4 /* QSortingSection.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ BC8BE6A798724DC1AA1EFC5A /* QuickDialogTableDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E7F8E6A08B6E43FBA1E0E639 /* QuickDialogTableDelegate.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ BFB483FE15B34AE4A3361B72 /* QColorPickerElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 74AF2740BD0B42C0A1C1672D /* QColorPickerElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ C00696370AFD4EE287CBB506 /* QDateEntryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 068760B503EF40D4B4C51F9F /* QDateEntryTableViewCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ C5DB65DD87A54D30BA5346B9 /* QRootElement.m in Sources */ = {isa = PBXBuildFile; fileRef = F6B94C9D177444DF9350B3ED /* QRootElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ CCFA773C0F644AFEB090E9E9 /* QEmptyListElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 785490C32BE440BD8682EAF3 /* QEmptyListElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D3ABCF0E6FD5460A844B3AE4 /* QMailElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 60084ED8BA3B4F92811D9C36 /* QMailElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D7B873DC6ED44855BE05399E /* QTextElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C726E21B190A4B46BF442DEA /* QTextElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ D9774F3DFABF4BE8B07D2A91 /* QRootElement+JsonBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 749D2E62913D4487B1B978D9 /* QRootElement+JsonBuilder.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ E2E7F20542AC4C32B1DF1D3D /* QDateTimeElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBBB2C62BB84581B928E337 /* QDateTimeElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ E92F556E4A1A4FCD8C4FFF42 /* UIColor+ColorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DA0B8B221D8430EA063DE0D /* UIColor+ColorUtilities.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ EA917E86F76241DCA5C37D46 /* QBadgeTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CEB258503054614BEE5006D /* QBadgeTableCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ F1052BDA46FF4B40AAA90E22 /* QuickDialogDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 17AB94A7F0C74C65AC69EF24 /* QuickDialogDataSource.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ F439852483F14D9393937849 /* QLabelElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E98FEBD6D3A4380B42DC7BE /* QLabelElement.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ F51B8EC551A44D10940E8129 /* Pods-SampleApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D462D91396BA41D0B8C67C16 /* Pods-SampleApp-dummy.m */; };
+ FB77DBD05FDC4FE89A4EEB78 /* QuickDialogTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32EEED6ED7D44BF9AF1F1567 /* QuickDialogTableView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 680C95310C1447009A9AE4A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 9C86FC4A98884791B1577034 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 1D40E732B20C45348A94494A;
+ remoteInfo = "Pods-SampleApp-QuickDialog";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 01AB653444424DEE873DA58B /* QEntryElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QEntryElement.m; path = Classes/Core/QEntryElement.m; sourceTree = ""; };
+ 02DD7235DA2B4571B86880B8 /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ 06814C21842B4DDD9B358C9B /* QImageElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QImageElement.m; path = Classes/Forms/QImageElement.m; sourceTree = ""; };
+ 068760B503EF40D4B4C51F9F /* QDateEntryTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDateEntryTableViewCell.m; path = Classes/Forms/QDateEntryTableViewCell.m; sourceTree = ""; };
+ 081E49B696F8466FA179831D /* Pods-SampleApp-QuickDialog-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp-QuickDialog-Private.xcconfig"; sourceTree = ""; };
+ 0BD59A95C78742DEB169B603 /* NSMutableArray+MoveObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+MoveObject.m"; path = "Classes/Core/NSMutableArray+MoveObject.m"; sourceTree = ""; };
+ 0CEC319ECF52411781E4E6C4 /* QSortingSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSortingSection.m; path = Classes/Core/QSortingSection.m; sourceTree = ""; };
+ 0E57C5FF31124E5B809E6DB4 /* QMapViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMapViewController.m; path = Classes/Extras/QMapViewController.m; sourceTree = ""; };
+ 118E0FBF6A454A6BB978844B /* libPods-SampleApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SampleApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1424E36A2A6B45398D58A666 /* QMultilineElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMultilineElement.m; path = Classes/Forms/QMultilineElement.m; sourceTree = ""; };
+ 17AB94A7F0C74C65AC69EF24 /* QuickDialogDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickDialogDataSource.m; path = Classes/Core/QuickDialogDataSource.m; sourceTree = ""; };
+ 1815A0C3033D430BA081B72C /* qd_keyboardPrevious@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; name = "qd_keyboardPrevious@2x.png"; path = "Assets/Core/qd_keyboardPrevious@2x.png"; sourceTree = ""; };
+ 1B82F62BEB9E4E4F92BF2418 /* QBadgeLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBadgeLabel.m; path = Classes/Forms/QBadgeLabel.m; sourceTree = ""; };
+ 1E54CCDEDCE846A29771B37C /* QDateTimeInlineElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDateTimeInlineElement.m; path = Classes/Forms/QDateTimeInlineElement.m; sourceTree = ""; };
+ 1E98FEBD6D3A4380B42DC7BE /* QLabelElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QLabelElement.m; path = Classes/Core/QLabelElement.m; sourceTree = ""; };
+ 218593143FA6432B97C1FA93 /* QLoadingElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QLoadingElement.m; path = Classes/Core/QLoadingElement.m; sourceTree = ""; };
+ 2CEB258503054614BEE5006D /* QBadgeTableCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBadgeTableCell.m; path = Classes/Forms/QBadgeTableCell.m; sourceTree = ""; };
+ 2D8A969D3C71439592ECC8CD /* QMapElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMapElement.m; path = Classes/Extras/QMapElement.m; sourceTree = ""; };
+ 30FFA0B8A379463190E4D086 /* QElement+Appearance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "QElement+Appearance.m"; path = "Classes/Core/QElement+Appearance.m"; sourceTree = ""; };
+ 32EEED6ED7D44BF9AF1F1567 /* QuickDialogTableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickDialogTableView.m; path = Classes/Core/QuickDialogTableView.m; sourceTree = ""; };
+ 33EA49B2802B4318BFB7B8CB /* Pods-SampleApp-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-environment.h"; sourceTree = ""; };
+ 34909F1D2F6745F8AF717C16 /* QFlatAppearance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QFlatAppearance.m; path = Classes/Core/QFlatAppearance.m; sourceTree = ""; };
+ 34E5802CC416416094DEB319 /* QuickDialogController+Helpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Helpers.m"; path = "Classes/Core/QuickDialogController+Helpers.m"; sourceTree = ""; };
+ 387B0E08AA5A4F74862BF5E9 /* QImageTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QImageTableViewCell.m; path = Classes/Forms/QImageTableViewCell.m; sourceTree = ""; };
+ 3A22BD4057D541288B65A575 /* QSliderElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSliderElement.m; path = Classes/Forms/QSliderElement.m; sourceTree = ""; };
+ 3CADA852370C40AB9023C542 /* Pods-SampleApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-resources.sh"; sourceTree = ""; };
+ 3FD27BBD0C1A40A2983BFC51 /* QRadioItemElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QRadioItemElement.m; path = Classes/Forms/QRadioItemElement.m; sourceTree = ""; };
+ 4291D358F27A467A9D9DCF44 /* QMapAnnotation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMapAnnotation.m; path = Classes/Extras/QMapAnnotation.m; sourceTree = ""; };
+ 4861EAEF45AC41F28E02F25D /* QuickDialogController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickDialogController.m; path = Classes/Core/QuickDialogController.m; sourceTree = ""; };
+ 4DBBB2C62BB84581B928E337 /* QDateTimeElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDateTimeElement.m; path = Classes/Forms/QDateTimeElement.m; sourceTree = ""; };
+ 516F62BB06A24856B0D22788 /* QElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QElement.m; path = Classes/Core/QElement.m; sourceTree = ""; };
+ 52BEECADB5124D4EBC4C75D1 /* QTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QTableViewCell.m; path = Classes/Core/QTableViewCell.m; sourceTree = ""; };
+ 5BD4882006B24426B77A9C08 /* Pods-SampleApp.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.xcconfig"; sourceTree = ""; };
+ 60084ED8BA3B4F92811D9C36 /* QMailElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMailElement.m; path = Classes/Extras/QMailElement.m; sourceTree = ""; };
+ 634C92522AFC41518529D040 /* Pods-SampleApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SampleApp-acknowledgements.markdown"; sourceTree = ""; };
+ 63B4F379E8D442DF801C68C8 /* Pods-SampleApp-QuickDialog.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp-QuickDialog.xcconfig"; sourceTree = ""; };
+ 69E6E4701C5447D98F25B875 /* QRadioSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QRadioSection.m; path = Classes/Forms/QRadioSection.m; sourceTree = ""; };
+ 6DAFE4F47E464E3C8AA24AE1 /* QDynamicDataSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDynamicDataSection.m; path = Classes/Core/QDynamicDataSection.m; sourceTree = ""; };
+ 749D2E62913D4487B1B978D9 /* QRootElement+JsonBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "QRootElement+JsonBuilder.m"; path = "Classes/Core/QRootElement+JsonBuilder.m"; sourceTree = ""; };
+ 74AF2740BD0B42C0A1C1672D /* QColorPickerElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QColorPickerElement.m; path = Classes/Extras/QColorPickerElement.m; sourceTree = ""; };
+ 785490C32BE440BD8682EAF3 /* QEmptyListElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QEmptyListElement.m; path = Classes/Core/QEmptyListElement.m; sourceTree = ""; };
+ 7CC7095A18AE4F6FA4A5C15F /* QDecimalElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDecimalElement.m; path = Classes/Forms/QDecimalElement.m; sourceTree = ""; };
+ 7D2339E1259149FC9772DBE6 /* QWebElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QWebElement.m; path = Classes/Extras/QWebElement.m; sourceTree = ""; };
+ 7DA0B8B221D8430EA063DE0D /* UIColor+ColorUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+ColorUtilities.m"; path = "Classes/Extras/UIColor+ColorUtilities.m"; sourceTree = ""; };
+ 7DD182B54B6B4677920A0B47 /* QDecimalTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDecimalTableViewCell.m; path = Classes/Forms/QDecimalTableViewCell.m; sourceTree = ""; };
+ 82B33BD9986645EF8BB3B4CA /* libPods-SampleApp-QuickDialog.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SampleApp-QuickDialog.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 85AE5C3BFB65497FB684293D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
+ 86718C6C67914557B1893BC7 /* QMultilineTextViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMultilineTextViewController.m; path = Classes/Forms/QMultilineTextViewController.m; sourceTree = ""; };
+ 8A743D8D15A344A4BA9A3DE9 /* QRadioElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QRadioElement.m; path = Classes/Forms/QRadioElement.m; sourceTree = ""; };
+ 8D8BCD2B81354C069D538C1A /* QBooleanElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBooleanElement.m; path = Classes/Forms/QBooleanElement.m; sourceTree = ""; };
+ 95EBE505E3BC45A091D9EC6F /* QTextField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QTextField.m; path = Classes/Core/QTextField.m; sourceTree = ""; };
+ 9E60DE9B3C464EEBBDE520CA /* QSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSection.m; path = Classes/Core/QSection.m; sourceTree = ""; };
+ A15BC5AA81FF48A5B855433C /* QSliderTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSliderTableViewCell.m; path = Classes/Forms/QSliderTableViewCell.m; sourceTree = ""; };
+ A3E396DF1B5A4AEAB042E0C4 /* Pods-SampleApp-QuickDialog-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-QuickDialog-prefix.pch"; sourceTree = ""; };
+ AB8253FA22AF4B5788D636B6 /* QEntryTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QEntryTableViewCell.m; path = Classes/Core/QEntryTableViewCell.m; sourceTree = ""; };
+ AF173537F9174CF7A248913E /* QSelectItemElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSelectItemElement.m; path = Classes/Forms/QSelectItemElement.m; sourceTree = ""; };
+ BE30409E2454467687EA29F4 /* QWebViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QWebViewController.m; path = Classes/Extras/QWebViewController.m; sourceTree = ""; };
+ BF3EDC3DED2C4E2A86A2C326 /* QDateInlineTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QDateInlineTableViewCell.m; path = Classes/Forms/QDateInlineTableViewCell.m; sourceTree = ""; };
+ C1ADD09CD66A4D5CAD8F336A /* QuickDialogController+Animations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Animations.m"; path = "Classes/Core/QuickDialogController+Animations.m"; sourceTree = ""; };
+ C1EF26C1F7694B0B92D64A35 /* QAppearance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QAppearance.m; path = Classes/Core/QAppearance.m; sourceTree = ""; };
+ C2E2A8719F824672A30F7577 /* QProgressElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QProgressElement.m; path = Classes/Forms/QProgressElement.m; sourceTree = ""; };
+ C400E86D9A0B4E8FACEF2D66 /* QButtonElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QButtonElement.m; path = Classes/Forms/QButtonElement.m; sourceTree = ""; };
+ C6E6A6B8E8B24FDB8923FB21 /* QSegmentedElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSegmentedElement.m; path = Classes/Forms/QSegmentedElement.m; sourceTree = ""; };
+ C726E21B190A4B46BF442DEA /* QTextElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QTextElement.m; path = Classes/Core/QTextElement.m; sourceTree = ""; };
+ CEE60C7C500545F8A062141A /* QuickDialogController+Navigation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Navigation.m"; path = "Classes/Core/QuickDialogController+Navigation.m"; sourceTree = ""; };
+ D462D91396BA41D0B8C67C16 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; };
+ D6F09231D51F40D79DCCD6CF /* Pods-SampleApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SampleApp-acknowledgements.plist"; sourceTree = ""; };
+ DCFB3902C7B84127AFDDF677 /* QSelectSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QSelectSection.m; path = Classes/Forms/QSelectSection.m; sourceTree = ""; };
+ E4322DD6153E44CFB4B47CAA /* Pods-SampleApp-QuickDialog-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-QuickDialog-dummy.m"; sourceTree = ""; };
+ E7F8E6A08B6E43FBA1E0E639 /* QuickDialogTableDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickDialogTableDelegate.m; path = Classes/Core/QuickDialogTableDelegate.m; sourceTree = ""; };
+ E82336FB4BC9467B87C25C5A /* QRootBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QRootBuilder.m; path = Classes/Core/QRootBuilder.m; sourceTree = ""; };
+ EAC58C0771934958BA10C1D5 /* qd_keyboardNext@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; name = "qd_keyboardNext@2x.png"; path = "Assets/Core/qd_keyboardNext@2x.png"; sourceTree = ""; };
+ EB63C88222A6422997A57C31 /* QBadgeElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBadgeElement.m; path = Classes/Forms/QBadgeElement.m; sourceTree = ""; };
+ F1B41F8D4ABD4A6C84D4A2DB /* QBindingEvaluator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBindingEvaluator.m; path = Classes/Core/QBindingEvaluator.m; sourceTree = ""; };
+ F6B94C9D177444DF9350B3ED /* QRootElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QRootElement.m; path = Classes/Core/QRootElement.m; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 557BA157780945C48B339DDF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4B056B68FDFE423D9FBE32D6 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ ACA78D6A76074E6B81AEC717 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 79B29C82FBF34C51B4FD36F7 /* Foundation.framework in Frameworks */,
+ 6212EE378110462E890AF626 /* libPods-SampleApp-QuickDialog.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 40F76980324546879EACCCF3 /* Development Pods */ = {
+ isa = PBXGroup;
+ children = (
+ D93C086D1C2944D0ACEB5C24 /* QuickDialog */,
+ );
+ name = "Development Pods";
+ sourceTree = "";
+ };
+ 4400F9FF49974551A14B6264 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 118E0FBF6A454A6BB978844B /* libPods-SampleApp.a */,
+ 82B33BD9986645EF8BB3B4CA /* libPods-SampleApp-QuickDialog.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 4ABABE7F9E2C4026A1D226D5 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D9CD4FDE487841A9BC994482 /* iOS */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 4B24703E193343D39FE70D77 /* Extras */ = {
+ isa = PBXGroup;
+ children = (
+ 74AF2740BD0B42C0A1C1672D /* QColorPickerElement.m */,
+ 60084ED8BA3B4F92811D9C36 /* QMailElement.m */,
+ 4291D358F27A467A9D9DCF44 /* QMapAnnotation.m */,
+ 2D8A969D3C71439592ECC8CD /* QMapElement.m */,
+ 0E57C5FF31124E5B809E6DB4 /* QMapViewController.m */,
+ 7D2339E1259149FC9772DBE6 /* QWebElement.m */,
+ BE30409E2454467687EA29F4 /* QWebViewController.m */,
+ 7DA0B8B221D8430EA063DE0D /* UIColor+ColorUtilities.m */,
+ );
+ name = Extras;
+ sourceTree = "";
+ };
+ 4CBB750306874FA3AA08207E = {
+ isa = PBXGroup;
+ children = (
+ 02DD7235DA2B4571B86880B8 /* Podfile */,
+ 40F76980324546879EACCCF3 /* Development Pods */,
+ 4ABABE7F9E2C4026A1D226D5 /* Frameworks */,
+ 4400F9FF49974551A14B6264 /* Products */,
+ B1EAEC671AE64C98906CE87F /* Targets Support Files */,
+ );
+ sourceTree = "";
+ };
+ 5CA99F38D4C04F6DB1B739A5 /* Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ 63B4F379E8D442DF801C68C8 /* Pods-SampleApp-QuickDialog.xcconfig */,
+ 081E49B696F8466FA179831D /* Pods-SampleApp-QuickDialog-Private.xcconfig */,
+ E4322DD6153E44CFB4B47CAA /* Pods-SampleApp-QuickDialog-dummy.m */,
+ A3E396DF1B5A4AEAB042E0C4 /* Pods-SampleApp-QuickDialog-prefix.pch */,
+ );
+ name = "Support Files";
+ sourceTree = SOURCE_ROOT;
+ };
+ 707141329B154889BEF459E6 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ EAC58C0771934958BA10C1D5 /* qd_keyboardNext@2x.png */,
+ 1815A0C3033D430BA081B72C /* qd_keyboardPrevious@2x.png */,
+ );
+ name = Resources;
+ sourceTree = "";
+ };
+ B1EAEC671AE64C98906CE87F /* Targets Support Files */ = {
+ isa = PBXGroup;
+ children = (
+ DBCC3D39C8024CAD94B83812 /* Pods-SampleApp */,
+ );
+ name = "Targets Support Files";
+ sourceTree = "";
+ };
+ D2C3802769D243FC9042A4CC /* Forms */ = {
+ isa = PBXGroup;
+ children = (
+ EB63C88222A6422997A57C31 /* QBadgeElement.m */,
+ 1B82F62BEB9E4E4F92BF2418 /* QBadgeLabel.m */,
+ 2CEB258503054614BEE5006D /* QBadgeTableCell.m */,
+ 8D8BCD2B81354C069D538C1A /* QBooleanElement.m */,
+ C400E86D9A0B4E8FACEF2D66 /* QButtonElement.m */,
+ 068760B503EF40D4B4C51F9F /* QDateEntryTableViewCell.m */,
+ BF3EDC3DED2C4E2A86A2C326 /* QDateInlineTableViewCell.m */,
+ 4DBBB2C62BB84581B928E337 /* QDateTimeElement.m */,
+ 1E54CCDEDCE846A29771B37C /* QDateTimeInlineElement.m */,
+ 7CC7095A18AE4F6FA4A5C15F /* QDecimalElement.m */,
+ 7DD182B54B6B4677920A0B47 /* QDecimalTableViewCell.m */,
+ 06814C21842B4DDD9B358C9B /* QImageElement.m */,
+ 387B0E08AA5A4F74862BF5E9 /* QImageTableViewCell.m */,
+ 1424E36A2A6B45398D58A666 /* QMultilineElement.m */,
+ 86718C6C67914557B1893BC7 /* QMultilineTextViewController.m */,
+ C2E2A8719F824672A30F7577 /* QProgressElement.m */,
+ 8A743D8D15A344A4BA9A3DE9 /* QRadioElement.m */,
+ 3FD27BBD0C1A40A2983BFC51 /* QRadioItemElement.m */,
+ 69E6E4701C5447D98F25B875 /* QRadioSection.m */,
+ C6E6A6B8E8B24FDB8923FB21 /* QSegmentedElement.m */,
+ AF173537F9174CF7A248913E /* QSelectItemElement.m */,
+ DCFB3902C7B84127AFDDF677 /* QSelectSection.m */,
+ 3A22BD4057D541288B65A575 /* QSliderElement.m */,
+ A15BC5AA81FF48A5B855433C /* QSliderTableViewCell.m */,
+ );
+ name = Forms;
+ sourceTree = "";
+ };
+ D93C086D1C2944D0ACEB5C24 /* QuickDialog */ = {
+ isa = PBXGroup;
+ children = (
+ FD1884EF2A7F424EA441DC90 /* Core */,
+ 4B24703E193343D39FE70D77 /* Extras */,
+ D2C3802769D243FC9042A4CC /* Forms */,
+ 5CA99F38D4C04F6DB1B739A5 /* Support Files */,
+ );
+ name = QuickDialog;
+ path = ../..;
+ sourceTree = "";
+ };
+ D9CD4FDE487841A9BC994482 /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 85AE5C3BFB65497FB684293D /* Foundation.framework */,
+ );
+ name = iOS;
+ sourceTree = "";
+ };
+ DBCC3D39C8024CAD94B83812 /* Pods-SampleApp */ = {
+ isa = PBXGroup;
+ children = (
+ 5BD4882006B24426B77A9C08 /* Pods-SampleApp.xcconfig */,
+ 634C92522AFC41518529D040 /* Pods-SampleApp-acknowledgements.markdown */,
+ D6F09231D51F40D79DCCD6CF /* Pods-SampleApp-acknowledgements.plist */,
+ D462D91396BA41D0B8C67C16 /* Pods-SampleApp-dummy.m */,
+ 33EA49B2802B4318BFB7B8CB /* Pods-SampleApp-environment.h */,
+ 3CADA852370C40AB9023C542 /* Pods-SampleApp-resources.sh */,
+ );
+ name = "Pods-SampleApp";
+ sourceTree = "";
+ };
+ FD1884EF2A7F424EA441DC90 /* Core */ = {
+ isa = PBXGroup;
+ children = (
+ 0BD59A95C78742DEB169B603 /* NSMutableArray+MoveObject.m */,
+ C1EF26C1F7694B0B92D64A35 /* QAppearance.m */,
+ F1B41F8D4ABD4A6C84D4A2DB /* QBindingEvaluator.m */,
+ 6DAFE4F47E464E3C8AA24AE1 /* QDynamicDataSection.m */,
+ 516F62BB06A24856B0D22788 /* QElement.m */,
+ 30FFA0B8A379463190E4D086 /* QElement+Appearance.m */,
+ 785490C32BE440BD8682EAF3 /* QEmptyListElement.m */,
+ 01AB653444424DEE873DA58B /* QEntryElement.m */,
+ AB8253FA22AF4B5788D636B6 /* QEntryTableViewCell.m */,
+ 34909F1D2F6745F8AF717C16 /* QFlatAppearance.m */,
+ 1E98FEBD6D3A4380B42DC7BE /* QLabelElement.m */,
+ 218593143FA6432B97C1FA93 /* QLoadingElement.m */,
+ E82336FB4BC9467B87C25C5A /* QRootBuilder.m */,
+ F6B94C9D177444DF9350B3ED /* QRootElement.m */,
+ 749D2E62913D4487B1B978D9 /* QRootElement+JsonBuilder.m */,
+ 9E60DE9B3C464EEBBDE520CA /* QSection.m */,
+ 0CEC319ECF52411781E4E6C4 /* QSortingSection.m */,
+ 52BEECADB5124D4EBC4C75D1 /* QTableViewCell.m */,
+ C726E21B190A4B46BF442DEA /* QTextElement.m */,
+ 95EBE505E3BC45A091D9EC6F /* QTextField.m */,
+ 4861EAEF45AC41F28E02F25D /* QuickDialogController.m */,
+ C1ADD09CD66A4D5CAD8F336A /* QuickDialogController+Animations.m */,
+ 34E5802CC416416094DEB319 /* QuickDialogController+Helpers.m */,
+ CEE60C7C500545F8A062141A /* QuickDialogController+Navigation.m */,
+ 17AB94A7F0C74C65AC69EF24 /* QuickDialogDataSource.m */,
+ E7F8E6A08B6E43FBA1E0E639 /* QuickDialogTableDelegate.m */,
+ 32EEED6ED7D44BF9AF1F1567 /* QuickDialogTableView.m */,
+ 707141329B154889BEF459E6 /* Resources */,
+ );
+ name = Core;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1D40E732B20C45348A94494A /* Pods-SampleApp-QuickDialog */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 04526E8BCA6947ABA6B02D4B /* Build configuration list for PBXNativeTarget "Pods-SampleApp-QuickDialog" */;
+ buildPhases = (
+ 711019972A124C37BC6EF49D /* Sources */,
+ 557BA157780945C48B339DDF /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "Pods-SampleApp-QuickDialog";
+ productName = "Pods-SampleApp-QuickDialog";
+ productReference = 82B33BD9986645EF8BB3B4CA /* libPods-SampleApp-QuickDialog.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+ 90BE5D8BCA344F9D9A450D08 /* Pods-SampleApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = CEE0F961F2BD4C009826C36D /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */;
+ buildPhases = (
+ 821F8936E32F4A92A6EAE1A0 /* Sources */,
+ ACA78D6A76074E6B81AEC717 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ EAF638513A05421DBCA2342B /* PBXTargetDependency */,
+ );
+ name = "Pods-SampleApp";
+ productName = "Pods-SampleApp";
+ productReference = 118E0FBF6A454A6BB978844B /* libPods-SampleApp.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 9C86FC4A98884791B1577034 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0510;
+ };
+ buildConfigurationList = 6ECB45FB1DDD445EAE3486DF /* Build configuration list for PBXProject "Pods" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = 4CBB750306874FA3AA08207E;
+ productRefGroup = 4400F9FF49974551A14B6264 /* Products */;
+ projectDirPath = "";
+ projectReferences = (
+ );
+ projectRoot = "";
+ targets = (
+ 90BE5D8BCA344F9D9A450D08 /* Pods-SampleApp */,
+ 1D40E732B20C45348A94494A /* Pods-SampleApp-QuickDialog */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 711019972A124C37BC6EF49D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5EF32E656C0F49D2A5999FC0 /* NSMutableArray+MoveObject.m in Sources */,
+ 411B09CC122345B3AF2A2089 /* Pods-SampleApp-QuickDialog-dummy.m in Sources */,
+ 8E36773EE52B4B56AB8A1558 /* QAppearance.m in Sources */,
+ 0862B6D7BC904F3392373CAB /* QBadgeElement.m in Sources */,
+ 628E4892EBD04AE7BF220527 /* QBadgeLabel.m in Sources */,
+ EA917E86F76241DCA5C37D46 /* QBadgeTableCell.m in Sources */,
+ 0A0E40DA0DD14C238CCE32D9 /* QBindingEvaluator.m in Sources */,
+ A87E6E392C6F4127BFA2F42D /* QBooleanElement.m in Sources */,
+ 15218018C146423C96C872E5 /* QButtonElement.m in Sources */,
+ BFB483FE15B34AE4A3361B72 /* QColorPickerElement.m in Sources */,
+ C00696370AFD4EE287CBB506 /* QDateEntryTableViewCell.m in Sources */,
+ A5A9DF53CEA046CEBE470134 /* QDateInlineTableViewCell.m in Sources */,
+ E2E7F20542AC4C32B1DF1D3D /* QDateTimeElement.m in Sources */,
+ 9FF1C95C4424424582059813 /* QDateTimeInlineElement.m in Sources */,
+ 6F309AF7773A4D6CB633237B /* QDecimalElement.m in Sources */,
+ 03BEF9F4E51F46DEAAEEFC76 /* QDecimalTableViewCell.m in Sources */,
+ 1D6E0AAB4FBC42C690602C76 /* QDynamicDataSection.m in Sources */,
+ 0EAB6AE6D3F44F89A565A79F /* QElement+Appearance.m in Sources */,
+ 661E19267BF944E4B34BF40A /* QElement.m in Sources */,
+ CCFA773C0F644AFEB090E9E9 /* QEmptyListElement.m in Sources */,
+ 29433123DDB8454F95153D98 /* QEntryElement.m in Sources */,
+ 32A72B40B61D407BB2933FA3 /* QEntryTableViewCell.m in Sources */,
+ 36FE3C999FF047F3904544A7 /* QFlatAppearance.m in Sources */,
+ 9BF32960711B4EC89D05CAF2 /* QImageElement.m in Sources */,
+ 7323E008F69849059531AAAD /* QImageTableViewCell.m in Sources */,
+ F439852483F14D9393937849 /* QLabelElement.m in Sources */,
+ 522817BFF5EC47D8989B98E4 /* QLoadingElement.m in Sources */,
+ D3ABCF0E6FD5460A844B3AE4 /* QMailElement.m in Sources */,
+ 09C7A0D9E2764496ADC7783A /* QMapAnnotation.m in Sources */,
+ 3599B15318E0449F8AC64DEA /* QMapElement.m in Sources */,
+ ACCAE0D53D0F4CFAB2F9A07A /* QMapViewController.m in Sources */,
+ B6EF54FCAB7D440286E46793 /* QMultilineElement.m in Sources */,
+ 711C2EFBCF4B4BAF8852779C /* QMultilineTextViewController.m in Sources */,
+ 344FCBF4F9714543BEB8EE70 /* QProgressElement.m in Sources */,
+ 97FB34837CF84B4D9675F711 /* QRadioElement.m in Sources */,
+ 323C35A036804991B57D73BE /* QRadioItemElement.m in Sources */,
+ 226B65E7BDFE45FBA36B037E /* QRadioSection.m in Sources */,
+ 38030EF8A349459FBBDF35A9 /* QRootBuilder.m in Sources */,
+ D9774F3DFABF4BE8B07D2A91 /* QRootElement+JsonBuilder.m in Sources */,
+ C5DB65DD87A54D30BA5346B9 /* QRootElement.m in Sources */,
+ 7E59C744704E4488B55FCB74 /* QSection.m in Sources */,
+ 6F9A0349DDE64AC09905E867 /* QSegmentedElement.m in Sources */,
+ 3134B6C993E34847A63897E6 /* QSelectItemElement.m in Sources */,
+ 945D83CE47A44465982BCD79 /* QSelectSection.m in Sources */,
+ 166F14C5B46D42DA907EF462 /* QSliderElement.m in Sources */,
+ 0EC3AF4F5E2A47D1B73A13E8 /* QSliderTableViewCell.m in Sources */,
+ B9F9431FD18A4D658BDFC1A4 /* QSortingSection.m in Sources */,
+ 559BC5525E694B8795B8B525 /* QTableViewCell.m in Sources */,
+ D7B873DC6ED44855BE05399E /* QTextElement.m in Sources */,
+ 45A8663A033E4EB99BCF8AB2 /* QTextField.m in Sources */,
+ 2AD1D52166F14B25A639377E /* QWebElement.m in Sources */,
+ 9D071BBDC20C4A80BBE633D3 /* QWebViewController.m in Sources */,
+ 5BD8D24697584D06B2482ADE /* QuickDialogController+Animations.m in Sources */,
+ 12318BE0939C428291108D9B /* QuickDialogController+Helpers.m in Sources */,
+ 1E0C3FE25CB4404B8670F84C /* QuickDialogController+Navigation.m in Sources */,
+ 78D49F2BAAC24FFEBC1BCD3F /* QuickDialogController.m in Sources */,
+ F1052BDA46FF4B40AAA90E22 /* QuickDialogDataSource.m in Sources */,
+ BC8BE6A798724DC1AA1EFC5A /* QuickDialogTableDelegate.m in Sources */,
+ FB77DBD05FDC4FE89A4EEB78 /* QuickDialogTableView.m in Sources */,
+ E92F556E4A1A4FCD8C4FFF42 /* UIColor+ColorUtilities.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 821F8936E32F4A92A6EAE1A0 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ F51B8EC551A44D10940E8129 /* Pods-SampleApp-dummy.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ EAF638513A05421DBCA2342B /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 1D40E732B20C45348A94494A /* Pods-SampleApp-QuickDialog */;
+ targetProxy = 680C95310C1447009A9AE4A7 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 04AC6E16462B443ABDF6C77B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 081E49B696F8466FA179831D /* Pods-SampleApp-QuickDialog-Private.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = NO;
+ DSTROOT = /tmp/xcodeproj.dst;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "Pods-SampleApp-QuickDialog-prefix.pch";
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PUBLIC_HEADERS_FOLDER_PATH = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ 849AFFA4766144119003DD7C /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5BD4882006B24426B77A9C08 /* Pods-SampleApp.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = NO;
+ DSTROOT = /tmp/xcodeproj.dst;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PUBLIC_HEADERS_FOLDER_PATH = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ AA70F26D009A473EB55E7519 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 081E49B696F8466FA179831D /* Pods-SampleApp-QuickDialog-Private.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ DSTROOT = /tmp/xcodeproj.dst;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "Pods-SampleApp-QuickDialog-prefix.pch";
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ OTHER_CFLAGS = (
+ "-DNS_BLOCK_ASSERTIONS=1",
+ "$(inherited)",
+ );
+ OTHER_CPLUSPLUSFLAGS = (
+ "-DNS_BLOCK_ASSERTIONS=1",
+ "$(inherited)",
+ );
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PUBLIC_HEADERS_FOLDER_PATH = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ B1D893EDC9364FA9BA68F324 /* 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 = NO;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES;
+ COPY_PHASE_STRIP = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ ONLY_ACTIVE_ARCH = YES;
+ STRIP_INSTALLED_PRODUCT = NO;
+ };
+ name = Debug;
+ };
+ EF64854E01A241D295DB85EC /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5BD4882006B24426B77A9C08 /* Pods-SampleApp.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ DSTROOT = /tmp/xcodeproj.dst;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ OTHER_CFLAGS = (
+ "-DNS_BLOCK_ASSERTIONS=1",
+ "$(inherited)",
+ );
+ OTHER_CPLUSPLUSFLAGS = (
+ "-DNS_BLOCK_ASSERTIONS=1",
+ "$(inherited)",
+ );
+ OTHER_LDFLAGS = "";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PUBLIC_HEADERS_FOLDER_PATH = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = YES;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ F4DFE0DA5FD646E0AF6A47F2 /* 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 = NO;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES;
+ COPY_PHASE_STRIP = NO;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.1;
+ STRIP_INSTALLED_PRODUCT = NO;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 04526E8BCA6947ABA6B02D4B /* Build configuration list for PBXNativeTarget "Pods-SampleApp-QuickDialog" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 04AC6E16462B443ABDF6C77B /* Debug */,
+ AA70F26D009A473EB55E7519 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6ECB45FB1DDD445EAE3486DF /* Build configuration list for PBXProject "Pods" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B1D893EDC9364FA9BA68F324 /* Debug */,
+ F4DFE0DA5FD646E0AF6A47F2 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ CEE0F961F2BD4C009826C36D /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 849AFFA4766144119003DD7C /* Debug */,
+ EF64854E01A241D295DB85EC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 9C86FC4A98884791B1577034 /* Project object */;
+}
diff --git a/Example/SampleApp.xcodeproj/project.pbxproj b/Example/SampleApp.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..75d8e453
--- /dev/null
+++ b/Example/SampleApp.xcodeproj/project.pbxproj
@@ -0,0 +1,577 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 5C50E0C487A2B94AABE03984 /* jsondatasample.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E58A58A18F293CA799CA /* jsondatasample.json */; };
+ 5C50E18B9FFC79D068557FDA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C50E28E4B3B1A08F7BAEF6F /* UIKit.framework */; };
+ 5C50E1D6AE2CC517883F18F5 /* LoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E771A5E69E2CE8840644 /* LoginController.m */; };
+ 5C50E1EDE427E1FDDE41EAA1 /* QDAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E04DA270FED9F7B22528 /* QDAppDelegate.m */; };
+ 5C50E2B40138199BA5B63DE4 /* footer.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E5489FB002B34EAF7123 /* footer.png */; };
+ 5C50E38E3FA54FDEE0577ED3 /* keyboard.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E1840912AB9B870CD1D2 /* keyboard.png */; };
+ 5C50E4A10EC4136EA1E1EC5D /* quickdialog.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E0AE162DC173C3D2F9E2 /* quickdialog.png */; };
+ 5C50E4EEBBDF07395E5260D6 /* imgOn.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50EC25BDAE7F004A69AD45 /* imgOn.png */; };
+ 5C50E5A961EE49595BDA12AD /* SampleDataBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EDFA8876A5CF9F831B61 /* SampleDataBuilder.m */; };
+ 5C50E5EDC9776336CDE4852D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C50EAC42BF3AFEE0645658C /* Foundation.framework */; };
+ 5C50E61AB51235B387FBBF8B /* footer@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50EB43300BB53B8F2E7F95 /* footer@2x.png */; };
+ 5C50E61F60B8C5C2D658968E /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E3C592E39274E989563D /* Images.xcassets */; };
+ 5C50E70908E2C0DA6B6CC819 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C50E28E4B3B1A08F7BAEF6F /* UIKit.framework */; };
+ 5C50E76B0DD74E5DFE275D71 /* iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E64D04032F00B048B169 /* iPhone.png */; };
+ 5C50E8789BDDCA43CB02F4E8 /* jsonremote.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E495796E236713A61B5D /* jsonremote.json */; };
+ 5C50E94341BB52C4F72F8F11 /* quickdialog@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E928EAB50D2BCB83E8B7 /* quickdialog@2x.png */; };
+ 5C50E9971FCA8C1314480699 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C50E3F726C2EFD8C46D648B /* CoreGraphics.framework */; };
+ 5C50E9CB3B279E992EE2CEB5 /* ExampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E3AC20F0115F88745298 /* ExampleViewController.m */; };
+ 5C50EA0AE40283DA04A01588 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E299E19D940F2318B4E3 /* main.m */; };
+ 5C50EBF54602546D85C5CBD8 /* AboutController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E7CEE906171DF17FA3F9 /* AboutController.m */; };
+ 5C50EC1E1DD44B782C941B9A /* LoginInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E2373C076604E68AC9EE /* LoginInfo.m */; };
+ 5C50ED082D9FBDDFB47A7B1A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C50E3E6BE6CAE47308DEE71 /* XCTest.framework */; };
+ 5C50ED0DAC81456882A7AC98 /* JsonDataSampleController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50ED06BF05A5C7AE288A40 /* JsonDataSampleController.m */; };
+ 5C50ED184372D081159A99B4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C50EAC42BF3AFEE0645658C /* Foundation.framework */; };
+ 5C50ED4D37291BDBF952B7DD /* core.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E5AACB4D8CB9CAA56C63 /* core.json */; };
+ 5C50ED5DFF95B66FCF87DC9B /* intel.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E1C32F1B89F2D9560B00 /* intel.png */; };
+ 5C50ED8926617917EFECA6D5 /* loginform.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E35467E27E0B116B959B /* loginform.json */; };
+ 5C50EDB14BB4A294BB85E9A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E3CB047912EBCD6CAE12 /* InfoPlist.strings */; };
+ 5C50EDD51CA41C214A40B5E0 /* jsonadvancedsample.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E8D14A7831D781C8444A /* jsonadvancedsample.json */; };
+ 5C50EE785D74669B730773C2 /* sample.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E615FA5BAD628EF2C546 /* sample.json */; };
+ 5C50EF4B08C2C0A091E2DD7F /* ExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EB2D3EAC467A414FEFC8 /* ExampleAppDelegate.m */; };
+ 5C50EFD5B294D3333E790B8C /* imgOff.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E7B95C94EB9C1276A1F0 /* imgOff.png */; };
+ 8ADE7F76550E49CB9945CF6B /* libPods-SampleApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 435E83A150E646779D4AE2AE /* libPods-SampleApp.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 5C50E89122FB883C67C4EFE6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 5C50E470600D4A16B2D88CCE /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5C50E3058210AE206C191C55;
+ remoteInfo = SampleApp;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 435E83A150E646779D4AE2AE /* libPods-SampleApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SampleApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5C50E04DA270FED9F7B22528 /* QDAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QDAppDelegate.m; sourceTree = ""; };
+ 5C50E0512FE3E7466D53C233 /* QuickDialogDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickDialogDelegate.h; sourceTree = ""; };
+ 5C50E0AE162DC173C3D2F9E2 /* quickdialog.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = quickdialog.png; sourceTree = ""; };
+ 5C50E1840912AB9B870CD1D2 /* keyboard.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = keyboard.png; sourceTree = ""; };
+ 5C50E1C32F1B89F2D9560B00 /* intel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = intel.png; sourceTree = ""; };
+ 5C50E1ECBC6393983BE495C5 /* JsonDataSampleController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JsonDataSampleController.h; sourceTree = ""; };
+ 5C50E2373C076604E68AC9EE /* LoginInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginInfo.m; sourceTree = ""; };
+ 5C50E28E4B3B1A08F7BAEF6F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 5C50E299E19D940F2318B4E3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ 5C50E35467E27E0B116B959B /* loginform.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; path = loginform.json; sourceTree = ""; };
+ 5C50E3AC20F0115F88745298 /* ExampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleViewController.m; sourceTree = ""; };
+ 5C50E3BAA51BCC3E2B8762E5 /* LoginInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginInfo.h; sourceTree = ""; };
+ 5C50E3C53E5B29F72C612454 /* SampleApp-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SampleApp-Prefix.pch"; sourceTree = ""; };
+ 5C50E3C592E39274E989563D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
+ 5C50E3E6BE6CAE47308DEE71 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+ 5C50E3F726C2EFD8C46D648B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 5C50E4906998583C4993ECC5 /* ExampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleViewController.h; sourceTree = ""; };
+ 5C50E495796E236713A61B5D /* jsonremote.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; path = jsonremote.json; sourceTree = ""; };
+ 5C50E5489FB002B34EAF7123 /* footer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = footer.png; sourceTree = ""; };
+ 5C50E58A58A18F293CA799CA /* jsondatasample.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; path = jsondatasample.json; sourceTree = ""; };
+ 5C50E5AACB4D8CB9CAA56C63 /* core.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; path = core.json; sourceTree = ""; };
+ 5C50E615FA5BAD628EF2C546 /* sample.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; path = sample.json; sourceTree = ""; };
+ 5C50E64B4C7C53814083071E /* QDAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QDAppDelegate.h; sourceTree = ""; };
+ 5C50E64D04032F00B048B169 /* iPhone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iPhone.png; sourceTree = ""; };
+ 5C50E771A5E69E2CE8840644 /* LoginController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginController.m; sourceTree = ""; };
+ 5C50E7B95C94EB9C1276A1F0 /* imgOff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = imgOff.png; sourceTree = ""; };
+ 5C50E7CEE906171DF17FA3F9 /* AboutController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutController.m; sourceTree = ""; };
+ 5C50E8D14A7831D781C8444A /* jsonadvancedsample.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; path = jsonadvancedsample.json; sourceTree = ""; };
+ 5C50E928EAB50D2BCB83E8B7 /* quickdialog@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "quickdialog@2x.png"; sourceTree = ""; };
+ 5C50E959E5FA3B2B7648AAF9 /* LoginController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginController.h; sourceTree = ""; };
+ 5C50EAB219D0084918F3AE55 /* SampleApp-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.info; path = "SampleApp-Info.plist"; sourceTree = ""; };
+ 5C50EAC42BF3AFEE0645658C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 5C50EB2D3EAC467A414FEFC8 /* ExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleAppDelegate.m; sourceTree = ""; };
+ 5C50EB43300BB53B8F2E7F95 /* footer@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "footer@2x.png"; sourceTree = ""; };
+ 5C50EB7DEBAAE144312B458B /* SampleAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SampleAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5C50EB894D1C5F51D96A9A4C /* AboutController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutController.h; sourceTree = ""; };
+ 5C50EBC44EF1BE4A4B15921C /* ExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleAppDelegate.h; sourceTree = ""; };
+ 5C50EC15944EFC3906593510 /* SampleDataBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleDataBuilder.h; sourceTree = ""; };
+ 5C50EC25BDAE7F004A69AD45 /* imgOn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = imgOn.png; sourceTree = ""; };
+ 5C50ECDEEC476CB2F20706E0 /* SampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5C50ED06BF05A5C7AE288A40 /* JsonDataSampleController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JsonDataSampleController.m; sourceTree = ""; };
+ 5C50EDBC4B0DA1E907F994C1 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
+ 5C50EDFA8876A5CF9F831B61 /* SampleDataBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SampleDataBuilder.m; sourceTree = ""; };
+ 76355A11830E45F19CE327BA /* Pods-SampleApp.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SampleApp.xcconfig"; path = "Pods/Pods-SampleApp.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 5C50E701199D0EDD53795B12 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5C50ED184372D081159A99B4 /* Foundation.framework in Frameworks */,
+ 5C50E9971FCA8C1314480699 /* CoreGraphics.framework in Frameworks */,
+ 5C50E18B9FFC79D068557FDA /* UIKit.framework in Frameworks */,
+ 8ADE7F76550E49CB9945CF6B /* libPods-SampleApp.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5C50EFDCD4F4EF39DF8CBE56 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5C50ED082D9FBDDFB47A7B1A /* XCTest.framework in Frameworks */,
+ 5C50E5EDC9776336CDE4852D /* Foundation.framework in Frameworks */,
+ 5C50E70908E2C0DA6B6CC819 /* UIKit.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 5C50E02FF046608E6C666B14 /* Forms */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50E8D14A7831D781C8444A /* jsonadvancedsample.json */,
+ 5C50E58A58A18F293CA799CA /* jsondatasample.json */,
+ 5C50E495796E236713A61B5D /* jsonremote.json */,
+ 5C50E35467E27E0B116B959B /* loginform.json */,
+ 5C50E615FA5BAD628EF2C546 /* sample.json */,
+ 5C50E5AACB4D8CB9CAA56C63 /* core.json */,
+ );
+ path = Forms;
+ sourceTree = "";
+ };
+ 5C50E0B0C07A9817E0D916D4 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50ECDEEC476CB2F20706E0 /* SampleApp.app */,
+ 5C50EB7DEBAAE144312B458B /* SampleAppTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 5C50E26C9849B0087372D4FD /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50E3BAA51BCC3E2B8762E5 /* LoginInfo.h */,
+ 5C50E2373C076604E68AC9EE /* LoginInfo.m */,
+ 5C50EB894D1C5F51D96A9A4C /* AboutController.h */,
+ 5C50E7CEE906171DF17FA3F9 /* AboutController.m */,
+ 5C50E959E5FA3B2B7648AAF9 /* LoginController.h */,
+ 5C50E771A5E69E2CE8840644 /* LoginController.m */,
+ 5C50EC15944EFC3906593510 /* SampleDataBuilder.h */,
+ 5C50EDFA8876A5CF9F831B61 /* SampleDataBuilder.m */,
+ 5C50EBC44EF1BE4A4B15921C /* ExampleAppDelegate.h */,
+ 5C50EB2D3EAC467A414FEFC8 /* ExampleAppDelegate.m */,
+ 5C50E0512FE3E7466D53C233 /* QuickDialogDelegate.h */,
+ 5C50E4906998583C4993ECC5 /* ExampleViewController.h */,
+ 5C50E3AC20F0115F88745298 /* ExampleViewController.m */,
+ 5C50E1ECBC6393983BE495C5 /* JsonDataSampleController.h */,
+ 5C50ED06BF05A5C7AE288A40 /* JsonDataSampleController.m */,
+ );
+ path = Classes;
+ sourceTree = "";
+ };
+ 5C50E2FB83F87AF16310C9EC /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50EAC42BF3AFEE0645658C /* Foundation.framework */,
+ 5C50E3F726C2EFD8C46D648B /* CoreGraphics.framework */,
+ 5C50E28E4B3B1A08F7BAEF6F /* UIKit.framework */,
+ 5C50E3E6BE6CAE47308DEE71 /* XCTest.framework */,
+ 435E83A150E646779D4AE2AE /* libPods-SampleApp.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 5C50E3BB33808FBEAD3E4C96 = {
+ isa = PBXGroup;
+ children = (
+ 5C50E0B0C07A9817E0D916D4 /* Products */,
+ 5C50E2FB83F87AF16310C9EC /* Frameworks */,
+ 5C50E798D0C7E3F3CDC2C72C /* SampleApp */,
+ 76355A11830E45F19CE327BA /* Pods-SampleApp.xcconfig */,
+ );
+ sourceTree = "";
+ };
+ 5C50E5E493A28CA6F3D1BECC /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50EAB219D0084918F3AE55 /* SampleApp-Info.plist */,
+ 5C50E3CB047912EBCD6CAE12 /* InfoPlist.strings */,
+ 5C50E299E19D940F2318B4E3 /* main.m */,
+ 5C50E3C53E5B29F72C612454 /* SampleApp-Prefix.pch */,
+ );
+ name = "Supporting Files";
+ sourceTree = "";
+ };
+ 5C50E798D0C7E3F3CDC2C72C /* SampleApp */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50E5E493A28CA6F3D1BECC /* Supporting Files */,
+ 5C50E64B4C7C53814083071E /* QDAppDelegate.h */,
+ 5C50E04DA270FED9F7B22528 /* QDAppDelegate.m */,
+ 5C50E3C592E39274E989563D /* Images.xcassets */,
+ 5C50E26C9849B0087372D4FD /* Classes */,
+ 5C50E02FF046608E6C666B14 /* Forms */,
+ 5C50EF959D24307A972AF7EE /* Images */,
+ );
+ path = SampleApp;
+ sourceTree = "";
+ };
+ 5C50EF959D24307A972AF7EE /* Images */ = {
+ isa = PBXGroup;
+ children = (
+ 5C50E7B95C94EB9C1276A1F0 /* imgOff.png */,
+ 5C50E64D04032F00B048B169 /* iPhone.png */,
+ 5C50E1840912AB9B870CD1D2 /* keyboard.png */,
+ 5C50EC25BDAE7F004A69AD45 /* imgOn.png */,
+ 5C50E928EAB50D2BCB83E8B7 /* quickdialog@2x.png */,
+ 5C50E0AE162DC173C3D2F9E2 /* quickdialog.png */,
+ 5C50E1C32F1B89F2D9560B00 /* intel.png */,
+ 5C50E5489FB002B34EAF7123 /* footer.png */,
+ 5C50EB43300BB53B8F2E7F95 /* footer@2x.png */,
+ );
+ path = Images;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 5C50E3058210AE206C191C55 /* SampleApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5C50E9647DB70D666227F920 /* Build configuration list for PBXNativeTarget "SampleApp" */;
+ buildPhases = (
+ 9028979A843548A8A1717F78 /* Check Pods Manifest.lock */,
+ 5C50E9CDD489555DCF11517A /* Sources */,
+ 5C50E701199D0EDD53795B12 /* Frameworks */,
+ 5C50E26C96364B0FA8EC1FC0 /* Resources */,
+ D2FB472CC4C744E3AFAEF70C /* Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SampleApp;
+ productName = SampleApp;
+ productReference = 5C50ECDEEC476CB2F20706E0 /* SampleApp.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 5C50E5A1ED62AFEF5F815FC7 /* SampleAppTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5C50EE5CBE1BBA46D8DD5041 /* Build configuration list for PBXNativeTarget "SampleAppTests" */;
+ buildPhases = (
+ 5C50EB86AAAC4534050B05AC /* Sources */,
+ 5C50EFDCD4F4EF39DF8CBE56 /* Frameworks */,
+ 5C50E99F5C41D7CD3BCBE461 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 5C50EDF530A97840CA74901B /* PBXTargetDependency */,
+ );
+ name = SampleAppTests;
+ productName = SampleAppTests;
+ productReference = 5C50EB7DEBAAE144312B458B /* SampleAppTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 5C50E470600D4A16B2D88CCE /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ ORGANIZATIONNAME = "ESCOZ inc";
+ };
+ buildConfigurationList = 5C50ECDFF14ECDD517FCBFE1 /* Build configuration list for PBXProject "SampleApp" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = 5C50E3BB33808FBEAD3E4C96;
+ productRefGroup = 5C50E0B0C07A9817E0D916D4 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 5C50E3058210AE206C191C55 /* SampleApp */,
+ 5C50E5A1ED62AFEF5F815FC7 /* SampleAppTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 5C50E26C96364B0FA8EC1FC0 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5C50EDB14BB4A294BB85E9A4 /* InfoPlist.strings in Resources */,
+ 5C50E61F60B8C5C2D658968E /* Images.xcassets in Resources */,
+ 5C50EDD51CA41C214A40B5E0 /* jsonadvancedsample.json in Resources */,
+ 5C50E0C487A2B94AABE03984 /* jsondatasample.json in Resources */,
+ 5C50E8789BDDCA43CB02F4E8 /* jsonremote.json in Resources */,
+ 5C50ED8926617917EFECA6D5 /* loginform.json in Resources */,
+ 5C50EE785D74669B730773C2 /* sample.json in Resources */,
+ 5C50EFD5B294D3333E790B8C /* imgOff.png in Resources */,
+ 5C50E76B0DD74E5DFE275D71 /* iPhone.png in Resources */,
+ 5C50E38E3FA54FDEE0577ED3 /* keyboard.png in Resources */,
+ 5C50E4EEBBDF07395E5260D6 /* imgOn.png in Resources */,
+ 5C50E94341BB52C4F72F8F11 /* quickdialog@2x.png in Resources */,
+ 5C50E4A10EC4136EA1E1EC5D /* quickdialog.png in Resources */,
+ 5C50ED5DFF95B66FCF87DC9B /* intel.png in Resources */,
+ 5C50E2B40138199BA5B63DE4 /* footer.png in Resources */,
+ 5C50E61AB51235B387FBBF8B /* footer@2x.png in Resources */,
+ 5C50ED4D37291BDBF952B7DD /* core.json in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5C50E99F5C41D7CD3BCBE461 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 9028979A843548A8A1717F78 /* Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "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 cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ D2FB472CC4C744E3AFAEF70C /* Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Pods-SampleApp-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 5C50E9CDD489555DCF11517A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5C50EA0AE40283DA04A01588 /* main.m in Sources */,
+ 5C50E1EDE427E1FDDE41EAA1 /* QDAppDelegate.m in Sources */,
+ 5C50EC1E1DD44B782C941B9A /* LoginInfo.m in Sources */,
+ 5C50EBF54602546D85C5CBD8 /* AboutController.m in Sources */,
+ 5C50E1D6AE2CC517883F18F5 /* LoginController.m in Sources */,
+ 5C50E5A961EE49595BDA12AD /* SampleDataBuilder.m in Sources */,
+ 5C50EF4B08C2C0A091E2DD7F /* ExampleAppDelegate.m in Sources */,
+ 5C50E9CB3B279E992EE2CEB5 /* ExampleViewController.m in Sources */,
+ 5C50ED0DAC81456882A7AC98 /* JsonDataSampleController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5C50EB86AAAC4534050B05AC /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 5C50EDF530A97840CA74901B /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5C50E3058210AE206C191C55 /* SampleApp */;
+ targetProxy = 5C50E89122FB883C67C4EFE6 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 5C50E3CB047912EBCD6CAE12 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 5C50EDBC4B0DA1E907F994C1 /* en */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 5C50E0F8193E4F0DA9EBBA69 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(SDKROOT)/Developer/Library/Frameworks",
+ "$(inherited)",
+ );
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "SampleApp/SampleApp-Prefix.pch";
+ INFOPLIST_FILE = "SampleAppTests/SampleAppTests-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = xctest;
+ };
+ name = Release;
+ };
+ 5C50E2D85B0FEE8DA5502F58 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(SDKROOT)/Developer/Library/Frameworks",
+ "$(inherited)",
+ );
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "SampleApp/SampleApp-Prefix.pch";
+ INFOPLIST_FILE = "SampleAppTests/SampleAppTests-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = xctest;
+ };
+ name = Debug;
+ };
+ 5C50E41855492FF58578E11F /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_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 = 7.1;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 5C50EBA40840265D55F4BB75 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_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 = 7.1;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 5C50EBF7352785D38B41A7E5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 76355A11830E45F19CE327BA /* Pods-SampleApp.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "SampleApp/SampleApp-Prefix.pch";
+ INFOPLIST_FILE = "SampleApp/SampleApp-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ 5C50ECB1D09BB2FAAB738190 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 76355A11830E45F19CE327BA /* Pods-SampleApp.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "SampleApp/SampleApp-Prefix.pch";
+ INFOPLIST_FILE = "SampleApp/SampleApp-Info.plist";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 5C50E9647DB70D666227F920 /* Build configuration list for PBXNativeTarget "SampleApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5C50EBF7352785D38B41A7E5 /* Debug */,
+ 5C50ECB1D09BB2FAAB738190 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 5C50ECDFF14ECDD517FCBFE1 /* Build configuration list for PBXProject "SampleApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5C50EBA40840265D55F4BB75 /* Debug */,
+ 5C50E41855492FF58578E11F /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 5C50EE5CBE1BBA46D8DD5041 /* Build configuration list for PBXNativeTarget "SampleAppTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5C50E2D85B0FEE8DA5502F58 /* Debug */,
+ 5C50E0F8193E4F0DA9EBBA69 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 5C50E470600D4A16B2D88CCE /* Project object */;
+}
diff --git a/quickdialog.xcworkspace/contents.xcworkspacedata b/Example/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 69%
rename from quickdialog.xcworkspace/contents.xcworkspacedata
rename to Example/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 16e3733b..2c451d70 100644
--- a/quickdialog.xcworkspace/contents.xcworkspacedata
+++ b/Example/SampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:SampleApp.xcodeproj">
diff --git a/Example/SampleApp.xcworkspace/contents.xcworkspacedata b/Example/SampleApp.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..d33c4806
--- /dev/null
+++ b/Example/SampleApp.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/sample/AboutController.h b/Example/SampleApp/Classes/AboutController.h
similarity index 100%
rename from sample/AboutController.h
rename to Example/SampleApp/Classes/AboutController.h
diff --git a/sample/AboutController.m b/Example/SampleApp/Classes/AboutController.m
similarity index 100%
rename from sample/AboutController.m
rename to Example/SampleApp/Classes/AboutController.m
diff --git a/sample/ExampleAppDelegate.h b/Example/SampleApp/Classes/ExampleAppDelegate.h
similarity index 100%
rename from sample/ExampleAppDelegate.h
rename to Example/SampleApp/Classes/ExampleAppDelegate.h
diff --git a/Example/SampleApp/Classes/ExampleAppDelegate.m b/Example/SampleApp/Classes/ExampleAppDelegate.m
new file mode 100644
index 00000000..b86ab749
--- /dev/null
+++ b/Example/SampleApp/Classes/ExampleAppDelegate.m
@@ -0,0 +1,53 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitatio ns under the License.
+//
+
+#import "SampleDataBuilder.h"
+#import "ExampleViewController.h"
+#import "ExampleAppDelegate.h"
+
+@implementation ExampleAppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+
+ // Sample root contains the data about the form, but none of the views
+ QRootElement *root = [SampleDataBuilder create];
+
+ // ExampleViewController is a subclass of QuickDialogController
+ ExampleViewController *exampleController = [[ExampleViewController alloc] initWithRoot:root];
+
+ // Wrap in a navigation controller
+ UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:exampleController];
+
+ // Set as default root controller (with a split view controller on iPad
+ if ([UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPhone) {
+ self.window.rootViewController = nav;
+ } else {
+ UISplitViewController *split = [[UISplitViewController alloc] init];
+ split.delegate = self;
+ split.viewControllers = @[nav, [[UINavigationController alloc] initWithRootViewController:[QuickDialogController new]]];
+ self.window.rootViewController = split;
+ }
+ [self.window makeKeyAndVisible];
+
+ return YES;
+}
+
+- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {
+ return NO;
+}
+
+
+@end
diff --git a/sample/ExampleViewController.h b/Example/SampleApp/Classes/ExampleViewController.h
similarity index 100%
rename from sample/ExampleViewController.h
rename to Example/SampleApp/Classes/ExampleViewController.h
diff --git a/sample/ExampleViewController.m b/Example/SampleApp/Classes/ExampleViewController.m
similarity index 84%
rename from sample/ExampleViewController.m
rename to Example/SampleApp/Classes/ExampleViewController.m
index aabec76d..1a89772e 100644
--- a/sample/ExampleViewController.m
+++ b/Example/SampleApp/Classes/ExampleViewController.m
@@ -12,8 +12,9 @@
// permissions and limitations under the License.
//
+#import
+#import
#import "ExampleViewController.h"
-#import "QWebElement.h"
@implementation ExampleViewController
@@ -26,11 +27,7 @@ - (void)didReceiveMemoryWarning
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
- if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
- return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
- } else {
- return YES;
- }
+ return [[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone || interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}
-(void)handleWebElementControllerAction:(QWebElement *)element {
@@ -53,12 +50,12 @@ - (void)displayViewControllerForRoot:(QRootElement *)element {
QuickDialogController *newController = [QuickDialogController controllerForRoot:element];
if (self.splitViewController!=nil){
- UINavigationController * navController = [self.splitViewController.viewControllers objectAtIndex:1];
+ UINavigationController * navController = self.splitViewController.viewControllers[1];
for (QSection *section in self.root.sections) {
for (QElement *current in section.elements){
if (current==element) {
- self.splitViewController.viewControllers = @[[self.splitViewController.viewControllers objectAtIndex:0], [[UINavigationController alloc] initWithRootViewController:newController]];
+ self.splitViewController.viewControllers = @[self.splitViewController.viewControllers[0], [[UINavigationController alloc] initWithRootViewController:newController]];
return;
}
}
@@ -79,7 +76,7 @@ -(void)setTheme:(QElement *)element {
if ([element.object isEqualToString:@"blue"]) {
QAppearance *appearance = [QElement appearance];
- appearance.labelFont = [UIFont boldSystemFontOfSize:12];
+ appearance.titleFont = [UIFont boldSystemFontOfSize:12];
appearance.backgroundColorEnabled = [UIColor colorWithRed:0.4353 green:0.6975 blue:0.9595 alpha:1.0000];
appearance.backgroundColorDisabled = [UIColor darkGrayColor];
appearance.labelColorEnabled = [UIColor darkGrayColor];
diff --git a/sample/JsonDataSampleController.h b/Example/SampleApp/Classes/JsonDataSampleController.h
similarity index 100%
rename from sample/JsonDataSampleController.h
rename to Example/SampleApp/Classes/JsonDataSampleController.h
diff --git a/sample/JsonDataSampleController.m b/Example/SampleApp/Classes/JsonDataSampleController.m
similarity index 90%
rename from sample/JsonDataSampleController.m
rename to Example/SampleApp/Classes/JsonDataSampleController.m
index 27642731..193471fa 100644
--- a/sample/JsonDataSampleController.m
+++ b/Example/SampleApp/Classes/JsonDataSampleController.m
@@ -16,8 +16,8 @@ -(void)handleLoadJsonWithDict:(QElement *)button {
[dataDict setValue:@"Midnight" forKey:@"myTime"];
[dataDict setValue:@"When?" forKey:@"dateTitle"];
[dataDict setValue:@"What time?" forKey:@"timeTitle"];
- [dataDict setValue:[NSNumber numberWithBool:YES] forKey:@"bool"];
- [dataDict setValue:[NSNumber numberWithFloat:0.4] forKey:@"float"];
+ [dataDict setValue:@YES forKey:@"bool"];
+ [dataDict setValue:@0.4F forKey:@"float"];
self.root = [[QRootElement alloc] initWithJSONFile:@"jsondatasample" andData:dataDict];
}
@@ -29,9 +29,9 @@ - (void)handleBindToObject:(QElement *)button {
[dataDict setValue:@"Hello" forKey:@"dateTitle"];
[dataDict setValue:@"Goodbye" forKey:@"timeTitle"];
[dataDict setValue:@"Bound from object" forKey:@"sectionTitle"];
- [dataDict setValue:[NSNumber numberWithBool:NO] forKey:@"bool"];
- [dataDict setValue:[NSNumber numberWithFloat:0.9] forKey:@"float"];
- [dataDict setValue:[NSNumber numberWithFloat:1] forKey:@"radio"];
+ [dataDict setValue:@NO forKey:@"bool"];
+ [dataDict setValue:@0.9F forKey:@"float"];
+ [dataDict setValue:@1 forKey:@"radio"];
[self.root bindToObject:dataDict];
[self.quickDialogTableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,2)] withRowAnimation:UITableViewRowAnimationFade];
diff --git a/sample/LoginController.h b/Example/SampleApp/Classes/LoginController.h
similarity index 100%
rename from sample/LoginController.h
rename to Example/SampleApp/Classes/LoginController.h
diff --git a/sample/LoginController.m b/Example/SampleApp/Classes/LoginController.m
similarity index 92%
rename from sample/LoginController.m
rename to Example/SampleApp/Classes/LoginController.m
index 512689bf..47c1cf97 100644
--- a/sample/LoginController.m
+++ b/Example/SampleApp/Classes/LoginController.m
@@ -12,6 +12,7 @@
// permissions and limitations under the License.
//
+#import
#import "LoginController.h"
#import "LoginInfo.h"
@@ -38,7 +39,6 @@ - (QuickDialogController *)initWithRoot:(QRootElement *)rootElement {
[self.root elementWithKey:@"password"].appearance = fieldsAppearance;
[self.root elementWithKey:@"button"].appearance = self.root.appearance.copy;
- [self.root elementWithKey:@"button"].appearance.backgroundColorEnabled = [UIColor greenColor];
}
return self;
@@ -54,19 +54,13 @@ - (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}
-- (void)loginCompleted:(LoginInfo *)info {
- [self loading:NO];
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:[NSString stringWithFormat: @"Hi %@, I hope you're loving QuickDialog! Here's your pass: %@", info.login, info.password] delegate:self cancelButtonTitle:@"YES!" otherButtonTitles:nil];
- [alert show];
-}
-
- (void)onLogin:(QButtonElement *)buttonElement {
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
- [self loading:YES];
LoginInfo *info = [[LoginInfo alloc] init];
[self.root fetchValueUsingBindingsIntoObject:info];
- [self performSelector:@selector(loginCompleted:) withObject:info afterDelay:2];
+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:[NSString stringWithFormat: @"Hi %@, I hope you're loving QuickDialog! Here's your pass: %@", info.login, info.password] delegate:self cancelButtonTitle:@"YES!" otherButtonTitles:nil];
+ [alert show];
}
- (void)onAbout {
diff --git a/sample/LoginInfo.h b/Example/SampleApp/Classes/LoginInfo.h
similarity index 100%
rename from sample/LoginInfo.h
rename to Example/SampleApp/Classes/LoginInfo.h
diff --git a/sample/LoginInfo.m b/Example/SampleApp/Classes/LoginInfo.m
similarity index 100%
rename from sample/LoginInfo.m
rename to Example/SampleApp/Classes/LoginInfo.m
diff --git a/Example/SampleApp/Classes/QuickDialogDelegate.h b/Example/SampleApp/Classes/QuickDialogDelegate.h
new file mode 100644
index 00000000..0cc6902b
--- /dev/null
+++ b/Example/SampleApp/Classes/QuickDialogDelegate.h
@@ -0,0 +1,31 @@
+//
+// Copyright 2011 ESCOZ Inc - http://escoz.com
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under
+// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+// ANY KIND, either express or implied. See the License for the specific language governing
+// permissions and limitations under the License.
+//
+
+#import
+
+@class QElement;
+@class QSection;
+
+@protocol QuickDialogDelegate
+
+
+@optional
+
+-(void) cell:(UITableViewCell *)cell willAppearForElement:(QElement *)element atIndexPath:(NSIndexPath *)indexPath;
+
+-(void) header:(UIView *)header willAppearForSection:(QSection *)section atIndex:(NSInteger)indexPath;
+-(void) footer:(UIView *)footer willAppearForSection:(QSection *)section atIndex:(NSInteger)indexPath;
+
+@end
+
diff --git a/sample/SampleDataBuilder.h b/Example/SampleApp/Classes/SampleDataBuilder.h
similarity index 100%
rename from sample/SampleDataBuilder.h
rename to Example/SampleApp/Classes/SampleDataBuilder.h
diff --git a/sample/SampleDataBuilder.m b/Example/SampleApp/Classes/SampleDataBuilder.m
similarity index 77%
rename from sample/SampleDataBuilder.m
rename to Example/SampleApp/Classes/SampleDataBuilder.m
index ae88ed4b..c5c028de 100644
--- a/sample/SampleDataBuilder.m
+++ b/Example/SampleApp/Classes/SampleDataBuilder.m
@@ -12,14 +12,24 @@
// permissions and limitations under the License.
//
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
#import
#import "SampleDataBuilder.h"
-#import "QDynamicDataSection.h"
-#import "PeriodPickerValueParser.h"
-#import "QMapElement.h"
-#import "QWebElement.h"
-#import "QMailElement.h"
-#import "QPickerElement.h"
@implementation SampleDataBuilder
@@ -37,13 +47,13 @@ + (QRootElement *)createWithInitDefault {
[subsection addElement:[[QBooleanElement alloc] init]];
[subsection addElement:[[QButtonElement alloc] init]];
[subsection addElement:[[QDateTimeInlineElement alloc] init]];
- [subsection addElement:[[QFloatElement alloc] init]];
+ [subsection addElement:[[QSliderElement alloc] init]];
[subsection addElement:[[QMapElement alloc] init]];
- [subsection addElement:[[QPickerElement alloc] init]];
[subsection addElement:[[QRadioElement alloc] init]];
[subsection addElement:[[QRadioItemElement alloc] init]];
[subsection addElement:[[QTextElement alloc] init]];
[subsection addElement:[[QWebElement alloc] init]];
+ [subsection addElement:[[QDecimalElement alloc] init]];
return subForm;
}
@@ -64,7 +74,7 @@ + (QRootElement *)createWithInitAndKey {
[subsection addElement:[[QBooleanElement alloc] initWithKey:@"Key1"]];
[subsection addElement:[[QButtonElement alloc] initWithKey:@"Key1"]];
[subsection addElement:[[QDateTimeInlineElement alloc] initWithKey:@"Key1"]];
- [subsection addElement:[[QFloatElement alloc] initWithKey:@"Key1"]];
+ [subsection addElement:[[QSliderElement alloc] initWithKey:@"Key1"]];
[subsection addElement:[[QMapElement alloc] initWithKey:@"Key1"]];
[subsection addElement:[[QRadioElement alloc] initWithKey:@"Key1"]];
[subsection addElement:[[QRadioItemElement alloc] initWithKey:@"Key1"]];
@@ -101,11 +111,11 @@ + (QRootElement *)createSampleFormRoot {
subForm.controllerName = @"ExampleViewController";
[subsection addElement:[[QLabelElement alloc] initWithTitle:@"Some title" Value:@"Some value"]];
- QEntryElement *elementEntry = [[QEntryElement alloc] initWithTitle:@"Entry" Value:nil Placeholder:@"type here"];
+ QEntryElement *elementEntry = [[QEntryElement alloc] initWithTitle:@"Entry" value:nil placeholder:@"type here"];
elementEntry.key = @"entryElement";
[subsection addElement:elementEntry];
[subsection addElement:[[QBooleanElement alloc] initWithTitle:@"boolean" BoolValue:YES]];
- [subsection addElement:[[QEntryElement alloc] initWithTitle:@"Entry 2" Value:@"Some value" Placeholder:@"type here two"]];
+ [subsection addElement:[[QEntryElement alloc] initWithTitle:@"Entry 2" value:@"Some value" placeholder:@"type here two"]];
[subForm addSection:subsection];
QSection *subsection2 = [[QSection alloc] init];
@@ -144,9 +154,9 @@ + (QRootElement *)createSlidersRoot {
[sliders addSection:detailsSection];
- [detailsSection addElement:[[QFloatElement alloc] initWithValue:0.5]];
- [detailsSection addElement:[[QFloatElement alloc] initWithTitle:@"Short" value:0.7]];
- [detailsSection addElement:[[QFloatElement alloc] initWithTitle:@"Really really long title" value:1]];
+ [detailsSection addElement:[[QSliderElement alloc] initWithTitle:nil value:0.5]];
+ [detailsSection addElement:[[QSliderElement alloc] initWithTitle:@"Short" value:0.7]];
+ [detailsSection addElement:[[QSliderElement alloc] initWithTitle:@"Really really long title" value:1]];
return sliders;
}
@@ -161,7 +171,7 @@ + (QElement *)createSampleControls {
QLabelElement *element1 = [[QLabelElement alloc] initWithTitle:@"Label" Value:@"element"];
- QRadioElement *radioElement = [[QRadioElement alloc] initWithItems:[[NSArray alloc] initWithObjects:@"Option 1", @"Option 2", @"Option 3",@"Option 11", @"Option 12", @"Option 13", @"Option 21", @"Option 22", @"Option 33", @"Option 41", @"Option 42", @"Option 43", @"Option 51", @"Option 52", @"Option 53", @"Option 61", @"Option 62", @"Option 63", @"Option 71", @"Option 72", @"Option 73", nil] selected:7 title:@"Radio"];
+ QRadioElement *radioElement = [[QRadioElement alloc] initWithItems:@[@"Option 1", @"Option 2", @"Option 3", @"Option 11", @"Option 12", @"Option 13", @"Option 21", @"Option 22", @"Option 33", @"Option 41", @"Option 42", @"Option 43", @"Option 51", @"Option 52", @"Option 53", @"Option 61", @"Option 62", @"Option 63", @"Option 71", @"Option 72", @"Option 73"] selected:7 title:@"Radio"];
radioElement.itemsImageNames = @[ @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel", @"iPhone", @"intel" ];
radioElement.key = @"radio1";
@@ -171,28 +181,24 @@ + (QElement *)createSampleControls {
boolElement.controllerAction = @"exampleAction:";
boolElement.key = @"bool1";
- QEntryElement *entryElement = [[QEntryElement alloc] initWithTitle:@"Entry Element" Value:nil Placeholder:@"type here"];
+ QEntryElement *entryElement = [[QEntryElement alloc] init];
+ entryElement.title = @"Entry Element";
+ entryElement.value = nil;
+ entryElement.placeholder = @"type here";
entryElement.key = @"entry1";
- NSArray *values = [NSArray arrayWithObjects:@"Ferrari", @"Ms.",@"Mrs.",@"Miss",@"Mr.",@"Prof.",@"A/Prof.",nil];
- QAutoEntryElement *autoElement = [[QAutoEntryElement alloc] initWithTitle:@"AutoComplete" value:nil placeholder:@"type letter M"];
- autoElement.autoCompleteValues = values;
- autoElement.autoCompleteColor = [UIColor orangeColor];
- autoElement.key = @"entry2";
-
controls.footer = @"More controls will be added.";
[controls addElement:element1];
[controls addElement:radioElement];
[controls addElement:entryElement];
- [controls addElement:autoElement];
-
+
[controls addElement:boolElement];
QDateTimeInlineElement *dateElement = [[QDateTimeInlineElement alloc] initWithTitle:@"DateTime" date:[NSDate date] andMode:UIDatePickerModeDateAndTime];
dateElement.key = @"date1";
[controls addElement:dateElement];
- QFloatElement *slider = [[QFloatElement alloc] initWithTitle:@"Float Element" value:0.5];
+ QSliderElement *slider = [[QSliderElement alloc] initWithTitle:@"Float Element" value:0.5];
slider.key = @"slider1";
[controls addElement:slider];
@@ -219,14 +225,13 @@ + (QElement *)createSampleControls {
QButtonElement *button = [[QButtonElement alloc] initWithTitle:@"Show form values"];
button.onSelected = ^{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello"
- message:[NSString stringWithFormat:@"1: %d\n2: %@\n3: %d\n4:%@\n5:%f\n6:%@\n7:%@",
- radioElement.selected ,
+ message:[NSString stringWithFormat:@"1: %li\n2: %@\n3: %d\n4:%@\n5:%f\n6:%@",
+ (long)radioElement.selected ,
entryElement.textValue,
boolElement.boolValue,
dateElement.dateValue ,
slider.floatValue,
- decimal.numberValue,
- autoElement.textValue]
+ decimal.numberValue]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
@@ -257,7 +262,7 @@ + (QElement *)createSampleControls {
QSection *segmented = [[QSection alloc] initWithTitle:@"Here's a long title for this segmented control"];
segmented.footer = @"And heres a long footer text for this segmented control";
- QSegmentedElement *segmentedElement = [[QSegmentedElement alloc] initWithItems:[[NSArray alloc] initWithObjects:@"Option 1", @"Option 2", @"Option 3", nil] selected:0 title:@"Radio"];
+ QSegmentedElement *segmentedElement = [[QSegmentedElement alloc] initWithItems:@[@"Option 1", @"Option 2", @"Option 3"] selected:0 title:@"Radio"];
radioElement.key = @"segmented1";
[segmented addElement:segmentedElement];
@@ -279,7 +284,7 @@ + (QElement *)createSampleControls {
}
+ (void)QEntryEditingChangedForElement:(QEntryElement *)element andCell:(QEntryTableViewCell *)cell {
- NSLog(@"Editing changed");
+ NSLog(@"Editing changed - Element %@, Cell %@", element, cell);
}
@@ -290,60 +295,27 @@ + (QElement *)createRadioRoot {
root.grouped = YES;
QSection *section1 = [[QSection alloc] initWithTitle:@"Radio element with push"];
- [section1 addElement:[[QRadioElement alloc] initWithItems:[NSArray arrayWithObjects:@"Football", @"Soccer", @"Formula 1", nil] selected:0]];
- [section1 addElement:[[QRadioElement alloc] initWithItems:[NSArray arrayWithObjects:@"Football", @"Soccer", @"Formula 1", nil] selected:0 title:@"Sport"]];
- [section1 addElement:[[QRadioElement alloc] initWithDict:[NSDictionary dictionaryWithObjectsAndKeys:@"FerrariObj", @"Ferrari", @"McLarenObj", @"McLaren", @"MercedesObj", @"Mercedes", nil] selected:0 title:@"With Dict"]];
+ [section1 addElement:[[QRadioElement alloc] initWithItems:@[@"Football", @"Soccer", @"Formula 1"] selected:0]];
+ [section1 addElement:[[QRadioElement alloc] initWithItems:@[@"Football", @"Soccer", @"Formula 1"] selected:0 title:@"Sport"]];
+ [section1 addElement:[[QRadioElement alloc] initWithDict:@{@"Ferrari" : @"FerrariObj", @"McLaren" : @"McLarenObj", @"Mercedes" : @"MercedesObj"} selected:0 title:@"With Dict"]];
- QRadioElement *elementWithAction = [[QRadioElement alloc] initWithItems:[NSArray arrayWithObjects:@"Ferrari", @"McLaren", @"Lotus", nil] selected:0 title:@"WithAction"];
+ QRadioElement *elementWithAction = [[QRadioElement alloc] initWithItems:@[@"Ferrari", @"McLaren", @"Lotus"] selected:0 title:@"WithAction"];
elementWithAction.controllerAction = @"exampleAction:";
[section1 addElement:elementWithAction];
[root addSection:section1];
- QRadioSection *section2 = [[QRadioSection alloc] initWithItems:[NSArray arrayWithObjects:@"Football", @"Soccer", @"Formula 1", nil] selected:0 title:@"Sport"];
+ QRadioSection *section2 = [[QRadioSection alloc] initWithItems:@[@"Football", @"Soccer", @"Formula 1"] selected:0 title:@"Sport"];
__weak QRadioSection *_section2 = section2;
- section2.onSelected = ^{ NSLog(@"selected index: %d", _section2.selected); };
+ section2.title = @"Simple selection";
+ section2.onSelected = ^{ NSLog(@"selected index: %li", (long)_section2.selected); };
[root addSection:section2];
- return root;
-}
-
-+ (QElement *)createPickerRoot
-{
- QRootElement *root = [[QRootElement alloc] init];
- root.controllerName = @"ExampleViewController";
- root.title = @"Picker";
- root.grouped = YES;
-
- NSArray *component1 = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12"];
- NSArray *component2 = @[@"A", @"B"];
- QPickerElement *simplePickerEl = [[QPickerElement alloc] initWithTitle:@"Key" items:@[component1, component2] value:@"3\tB"];
-
- __weak QPickerElement *_simplePickerEl = simplePickerEl;
- simplePickerEl.onValueChanged = ^(QRootElement *el){
- NSLog(@"Selected indexes: %@", [_simplePickerEl.selectedIndexes componentsJoinedByString:@","]);
- };
+ QRadioSection *section3 = [[QRadioSection alloc] initWithItems:@[@"Football", @"Soccer", @"Formula 1"] selected:0 title:@"Sport"];
+ section3.multipleAllowed = YES;
+ section3.title = @"Multiple selection";
+ [root addSection:section3];
- QSection *simplePickerSection = [[QSection alloc] initWithTitle:@"Picker element"];
- [simplePickerSection addElement:simplePickerEl];
- [root addSection:simplePickerSection];
-
- QSection *customParserSection = [[QSection alloc] initWithTitle:@"Custom value parser"];
-
- PeriodPickerValueParser *periodParser = [[PeriodPickerValueParser alloc] init];
-
- QPickerElement *periodPickerEl =
- [[QPickerElement alloc] initWithTitle:@"Period"
- items:[NSArray arrayWithObject:periodParser.stringPeriods]
- value:[NSNumber numberWithUnsignedInteger:NSMonthCalendarUnit]];
-
- periodPickerEl.valueParser = periodParser;
- __weak QPickerElement *_periodPickerEl = periodPickerEl;
- periodPickerEl.onValueChanged = ^(QRootElement *el){ NSLog(@"New value: %@", _periodPickerEl.value); };
-
- [customParserSection addElement:periodPickerEl];
- [root addSection:customParserSection];
-
return root;
}
@@ -355,14 +327,12 @@ + (QElement *)createSelectRoot
root.grouped = YES;
QSelectSection *simpleSelectSection =
- [[QSelectSection alloc] initWithItems:[NSArray arrayWithObjects:@"Football", @"Soccer", @"Formula 1", nil]
+ [[QSelectSection alloc] initWithItems:@[@"Football", @"Soccer", @"Formula 1"]
selectedIndexes:nil title:@"Simple select"];
QSelectSection *multipleSelectSection =
- [[QSelectSection alloc] initWithItems:[NSArray arrayWithObjects:@"Football", @"Soccer", @"Formula 1", nil]
- selectedIndexes:[NSArray arrayWithObjects:
- [NSNumber numberWithUnsignedInteger:0],
- [NSNumber numberWithUnsignedInteger:1], nil]
+ [[QSelectSection alloc] initWithItems:@[@"Football", @"Soccer", @"Formula 1"]
+ selectedIndexes:@[@0, @1]
title:@"Multiple select"];
multipleSelectSection.multipleAllowed = YES;
@@ -518,24 +488,24 @@ + (QRootElement *)createEntryRoot {
QSection *firstSection = [[QSection alloc] initWithTitle:@"Entry Elements"];
- [firstSection addElement:[[QEntryElement alloc] initWithTitle:nil Value:nil Placeholder:@"placeholder"]];
- [firstSection addElement:[[QEntryElement alloc] initWithTitle:@"With Title" Value:nil Placeholder:@"text here"]];
- [firstSection addElement:[[QEntryElement alloc] initWithTitle:@"With Very Long Title" Value:@"" Placeholder:@"text"]];
+ [firstSection addElement:[[QEntryElement alloc] initWithTitle:nil value:nil placeholder:@"placeholder"]];
+ [firstSection addElement:[[QEntryElement alloc] initWithTitle:@"With Title" value:nil placeholder:@"text here"]];
+ [firstSection addElement:[[QEntryElement alloc] initWithTitle:@"With Very Long Title" value:@"" placeholder:@"text"]];
[root addSection:firstSection];
QSection *prefixSuffixSection = [[QSection alloc] initWithTitle:@"Prefix/suffix"];
prefixSuffixSection.footer = @"Prefix/suffix is only displayed, they're not stored in textValue";
- QEntryElement *prefixElement = [[QEntryElement alloc] initWithTitle:nil Value:nil Placeholder:@"with prefix"];
+ QEntryElement *prefixElement = [[QEntryElement alloc] initWithTitle:nil value:nil placeholder:@"with prefix"];
prefixElement.keyboardType = UIKeyboardTypeNumberPad;
prefixElement.prefix = @"$";
- QEntryElement *suffixElement = [[QEntryElement alloc] initWithTitle:nil Value:nil Placeholder:@"with suffix"];
+ QEntryElement *suffixElement = [[QEntryElement alloc] initWithTitle:nil value:nil placeholder:@"with suffix"];
suffixElement.keyboardType = UIKeyboardTypeNumberPad;
suffixElement.suffix = @" km";
- QEntryElement *prefixSuffixElement = [[QEntryElement alloc] initWithTitle:nil Value:nil Placeholder:@"with prefix and suffix"];
+ QEntryElement *prefixSuffixElement = [[QEntryElement alloc] initWithTitle:nil value:nil placeholder:@"with prefix and suffix"];
prefixSuffixElement.prefix = @"* ";
prefixSuffixElement.suffix = @" *";
@@ -546,31 +516,31 @@ + (QRootElement *)createEntryRoot {
QSection *traitsSection = [[QSection alloc] initWithTitle:@"UITextInputTraits"];
- QEntryElement *secureElement = [[QEntryElement alloc] initWithTitle:@"Secure" Value:@"" Placeholder:@"YES"];
+ QEntryElement *secureElement = [[QEntryElement alloc] initWithTitle:@"Secure" value:@"" placeholder:@"YES"];
secureElement.secureTextEntry = YES;
[traitsSection addElement:secureElement];
- QEntryElement *keyboardTypeElement = [[QEntryElement alloc] initWithTitle:@"KB Type" Value:@"" Placeholder:@"NumberPad"];
+ QEntryElement *keyboardTypeElement = [[QEntryElement alloc] initWithTitle:@"KB Type" value:@"" placeholder:@"NumberPad"];
keyboardTypeElement.keyboardType = UIKeyboardTypeNumberPad;
[traitsSection addElement:keyboardTypeElement];
- QEntryElement *keyboardAppearanceElement = [[QEntryElement alloc] initWithTitle:@"KB Appearance" Value:@"" Placeholder:@"Alert"];
+ QEntryElement *keyboardAppearanceElement = [[QEntryElement alloc] initWithTitle:@"KB Appearance" value:@"" placeholder:@"Alert"];
keyboardAppearanceElement.keyboardAppearance = UIKeyboardAppearanceAlert;
[traitsSection addElement:keyboardAppearanceElement];
- QEntryElement *correctionElement = [[QEntryElement alloc] initWithTitle:@"Correction" Value:@"" Placeholder:@"No"];
+ QEntryElement *correctionElement = [[QEntryElement alloc] initWithTitle:@"Correction" value:@"" placeholder:@"No"];
correctionElement.autocorrectionType = UITextAutocorrectionTypeNo;
[traitsSection addElement:correctionElement];
- QEntryElement *capitalizationElement = [[QEntryElement alloc] initWithTitle:@"Capitalization" Value:@"" Placeholder:@"AllCharacters"];
+ QEntryElement *capitalizationElement = [[QEntryElement alloc] initWithTitle:@"Capitalization" value:@"" placeholder:@"AllCharacters"];
capitalizationElement.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
[traitsSection addElement:capitalizationElement];
- QEntryElement *googleElement = [[QEntryElement alloc] initWithTitle:@"Return Key" Value:@"" Placeholder:@"Google"];
+ QEntryElement *googleElement = [[QEntryElement alloc] initWithTitle:@"Return Key" value:@"" placeholder:@"Google"];
googleElement.returnKeyType = UIReturnKeyGoogle;
[traitsSection addElement:googleElement];
- QEntryElement *enableReturnElement = [[QEntryElement alloc] initWithTitle:@"Auto Return" Value:@"" Placeholder:@"YES"];
+ QEntryElement *enableReturnElement = [[QEntryElement alloc] initWithTitle:@"Auto Return" value:@"" placeholder:@"YES"];
enableReturnElement.enablesReturnKeyAutomatically = YES;
[traitsSection addElement:enableReturnElement];
@@ -585,7 +555,7 @@ + (QRootElement *)createEntryRoot {
[root addSection:traitsSection];
QSection *imageSection = [[QSection alloc] initWithTitle:@"With images"];
- QEntryElement *regularEntryElementWithImage = [[QEntryElement alloc] initWithTitle:@"Entry with image" Value:@"" Placeholder:@"YES"];
+ QEntryElement *regularEntryElementWithImage = [[QEntryElement alloc] initWithTitle:@"Entry with image" value:@"" placeholder:@"YES"];
regularEntryElementWithImage.image = [UIImage imageNamed:@"keyboard"];
[imageSection addElement:regularEntryElementWithImage];
QMultilineElement *multilineWithImage = [QMultilineElement new];
@@ -663,28 +633,10 @@ + (QRootElement *)createDateTimeRoot {
QDateTimeInlineElement *elDiffTime = [[QDateTimeInlineElement alloc] initWithTitle:@"Different date" date:
[NSDate dateWithTimeIntervalSinceNow:-36000] andMode:UIDatePickerModeDate];
[section addElement:elDiffTime];
-
- QCountdownElement *countDown = [[QCountdownElement alloc] init];
- countDown.title = @"Countdown";
- countDown.ticksValue = [NSNumber numberWithDouble: 9780.0]; // 2Hr 43Min
- [section addElement:countDown];
QSection *section2 = [[QSection alloc] init];
section2.title = @"Push editing";
- QDateTimeElement *el5 = [[QDateTimeElement alloc] initWithTitle:@"Time only" date:[NSDate date]];
- el5.mode = UIDatePickerModeTime;
- [section2 addElement:el5];
-
- QDateTimeElement *el6 = [[QDateTimeElement alloc] initWithTitle:@"Date only" date:[NSDate date]];
- el6.mode = UIDatePickerModeDate;
- [section2 addElement:el6];
-
- QDateTimeElement *el7 = [[QDateTimeElement alloc] initWithTitle:@"Full Date" date:[NSDate date]];
- el7.mode = UIDatePickerModeDateAndTime;
- el7.minuteInterval = 3;
- [section2 addElement:el7];
-
[root addSection:section];
[root addSection:section2];
return root;
@@ -718,16 +670,10 @@ + (QElement *)createDynamicSectionRoot {
QDynamicDataSection *section = [QDynamicDataSection new];
section.title = @"Normal: with elements";
section.bind = @"iterate:something";
- section.elementTemplate = [NSDictionary dictionaryWithObjectsAndKeys:
- @"QLabelElement", @"type",
- @"Something here", @"title",
- nil];
+ section.elementTemplate = @{@"type" : @"QLabelElement", @"title" : @"Something here"};
[root addSection: section];
- [root bindToObject:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSArray array], @"empty",
- [NSArray arrayWithObjects:@"first", @"second", nil], @"something",
- nil]];
+ [root bindToObject:@{@"empty" : [NSArray array], @"something" : @[@"first", @"second"]}];
return root;
}
@@ -741,6 +687,7 @@ + (QRootElement *)create {
QSection *sectionSamples = [[QSection alloc] init];
sectionSamples.footer = @"Hey there, this is a footer.";
sectionSamples.headerView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"quickdialog"]];
+ [sectionSamples addElement:[[QRootElement alloc] initWithJSONFile:@"core"]];
[sectionSamples addElement:[[QRootElement alloc] initWithJSONFile:@"loginform"]];
[sectionSamples addElement:[self createSampleControls]];
[sectionSamples addElement:[self createSampleFormRoot]];
@@ -752,8 +699,7 @@ + (QRootElement *)create {
[sectionElements addElement:[self createEntryRoot]];
[sectionElements addElement:[self createSlidersRoot]];
[sectionElements addElement:[self createRadioRoot]];
- [sectionElements addElement:[[QRootElement alloc] initWithJSONFile:@"navigation"]];
- [sectionElements addElement:[self createPickerRoot]];
+// [sectionElements addElement:[[QRootElement alloc] initWithJSONFile:@"navigation"]];
[sectionElements addElement:[self createSelectRoot]];
[sectionElements addElement:[self createMailRoot]];
[sectionElements addElement:[self createWebAndMapRoot]];
@@ -778,21 +724,19 @@ + (QRootElement *)create {
[root addSection:sectionSamples];
[root addSection:sectionElements];
- if (objc_getClass("NSJSONSerialization")!=nil) {
- QSection *sectionJson = [[QSection alloc] initWithTitle:@"JSON Samples"];
- [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"loginform"]];
- [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"sample"]];
- [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"jsondatasample"]];
- [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"jsonadvancedsample"]];
- [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"jsonremote"]];
+ QSection *sectionJson = [[QSection alloc] initWithTitle:@"JSON Samples"];
+ [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"loginform"]];
+ [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"sample"]];
+ [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"jsondatasample"]];
+ [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"jsonadvancedsample"]];
+ [sectionJson addElement:[[QRootElement alloc] initWithJSONFile:@"jsonremote"]];
- NSString *jsonSample = @"{\"title\": \"In memory struct\",\n"
- " \"controllerName\": \"LoginController\", \"sections\":[]}";
- id const parsedJson = [NSJSONSerialization JSONObjectWithData:[jsonSample dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableLeaves error:nil];
- [sectionJson addElement:[[QRootElement alloc] initWithJSON:parsedJson andData:nil]];
- [root addSection:sectionJson];
- }
+ NSString *jsonSample = @"{\"title\": \"In memory struct\",\n"
+ " \"controllerName\": \"LoginController\", \"sections\":[]}";
+ id const parsedJson = [NSJSONSerialization JSONObjectWithData:[jsonSample dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableLeaves error:nil];
+ [sectionJson addElement:[[QRootElement alloc] initWithJSON:parsedJson andData:nil]];
+ [root addSection:sectionJson];
return root;
}
diff --git a/Example/SampleApp/Forms/core.json b/Example/SampleApp/Forms/core.json
new file mode 100644
index 00000000..2b2a20f3
--- /dev/null
+++ b/Example/SampleApp/Forms/core.json
@@ -0,0 +1,50 @@
+{
+ "grouped": true,
+ "title": "Core Elements",
+ "sections": [
+ { "title":"Basic", "elements":[
+ {"type":"QRootElement", "title":"QLabelElement", "sections":[
+ { "elements":[
+ { "type":"QLabelElement", "title":"QLabelElement"},
+ { "type":"QLabelElement", "title":"QLabelElement", "value":"Hello there!"},
+ { "type":"QLabelElement", "title":"Long Title Long Title Long Title Long Title Long Title", "value":"QLabelElement"},
+ { "type":"QLabelElement", "labelingPolicy":"trimTitle", "title":"Trim Title", "value":"Long Value Long Value Long Value Long Value Long Value Long Value "},
+ { "type":"QLabelElement", "labelingPolicy":"trimValue", "title":"Trim Value Trim Value Trim Value", "value":"Long Value Long Value Long Value Long Value Long Value Long Value"},
+ { "type":"QLabelElement", "title":"QLabelElement", "value":"Long Value Long Value Long Value Long Value Long Value Long Value "},
+ { "type":"QLabelElement", "title":"QLabelElement", "value":"Hello there!"},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "title":"QLabelElement"},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "title":"QLabelElement", "value":"Hello there!"},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "title":"Long Title Long Title Long Title Long Title Long Title", "value":"QLabelElement"},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "labelingPolicy":"trimTitle", "title":"Trim Title", "value":"Long Value Long Value Long Value Long Value Long Value Long Value "},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "labelingPolicy":"trimValue", "title":"Trim Value Trim Value Trim Value", "value":"Long Value Long Value Long Value Long Value Long Value Long Value"},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "title":"QLabelElement", "value":"Long Value Long Value Long Value Long Value Long Value Long Value "},
+ { "type":"QLabelElement", "imageNamed":"iPhone", "title":"QLabelElement", "value":"Hello there!"}
+ ]}
+ ]}
+ ]},
+ { "title":"Binding Elements", "elements":[
+ { "type":"QLoadingElement", "title":"QLoadingElement"},
+ { "type":"QLoadingElement"},
+ { "type":"QEmptyListElement", "title":"This is the EmptyList message."}
+ ]
+ },
+ { "title":"Text Elements", "elements":[
+ { "type":"QTextElement", "text":"Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. Some really long text. "},
+ { "type":"QTextElement", "title":"This has a title", "text":"Some really long text. Some really long text. Some really long text "}
+ ]
+ },
+ { "title":"Entry Elements", "footer":"Notice how the textfields align with the longest title.", "elements":[
+ { "type":"QEntryElement", "placeholder":"Empty title"},
+ { "type":"QEntryElement", "title":"Short title", "placeholder":"Type something here"},
+ { "type":"QEntryElement", "title":"This is a longer title", "textValue":"one two three"},
+ { "type":"QEntryElement", "title":"This is a very very long title", "textValue":"one two three"}
+ ]
+ },
+ { "title":"Bind collection", "bind":"iterate:cities", "elementTemplate":
+ { "type":"QLabelElement", "bind":"title:name, value:total"}
+ },
+ { "title":"Bind properties", "bind":"iterateproperties:teams", "elementTemplate":
+ { "type":"QLabelElement", "bind":"title:key, value:value"}
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sample/Resources/jsonadvancedsample.json b/Example/SampleApp/Forms/jsonadvancedsample.json
similarity index 100%
rename from sample/Resources/jsonadvancedsample.json
rename to Example/SampleApp/Forms/jsonadvancedsample.json
diff --git a/sample/Resources/jsondatasample.json b/Example/SampleApp/Forms/jsondatasample.json
similarity index 93%
rename from sample/Resources/jsondatasample.json
rename to Example/SampleApp/Forms/jsondatasample.json
index 33e93379..1c04d4d4 100644
--- a/sample/Resources/jsondatasample.json
+++ b/Example/SampleApp/Forms/jsondatasample.json
@@ -10,7 +10,7 @@
},
{ "elements":[
{ "type":"QBooleanElement", "title":"Boolean", "boolValue":0, "bind":"boolValue:bool"},
- { "type":"QFloatElement", "title":"Progress", "floatValue":0, "bind":"floatValue:float"},
+ { "type":"QSliderElement", "title":"Progress", "floatValue":0, "bind":"floatValue:float"},
{ "type":"QRadioElement", "title":"Radio", "selected":0, "bind":"selectedValue:radio", "items":["item 1", "item 2", "item 3"]}
]
},
diff --git a/sample/Resources/jsonremote.json b/Example/SampleApp/Forms/jsonremote.json
similarity index 100%
rename from sample/Resources/jsonremote.json
rename to Example/SampleApp/Forms/jsonremote.json
diff --git a/sample/Resources/loginform.json b/Example/SampleApp/Forms/loginform.json
similarity index 82%
rename from sample/Resources/loginform.json
rename to Example/SampleApp/Forms/loginform.json
index 168f3a68..d99d8816 100644
--- a/sample/Resources/loginform.json
+++ b/Example/SampleApp/Forms/loginform.json
@@ -3,7 +3,7 @@
"title": "Login Form",
"controllerName": "LoginController",
"sections": [
- { "title":"Awesome Login Form", "headerImage":"logo", "footer":"Please type your credentials.", "elements": [
+ { "title":"Awesome Login Form", "headerImage":"quickdialog", "footer":"Please type your credentials.", "elements": [
{ "type":"QEntryElement", "keyboardType":"EmailAddress", "title":"Login","placeholder":"Login or email", "bind":"textValue:login", "key":"login"},
{ "type":"QEntryElement", "title":"Password", "placeholder":"Password", "secureTextEntry":true, "bind":"textValue:password","key":"password" }
]
diff --git a/sample/Resources/sample.json b/Example/SampleApp/Forms/sample.json
similarity index 89%
rename from sample/Resources/sample.json
rename to Example/SampleApp/Forms/sample.json
index 85d372a4..ca85f501 100644
--- a/sample/Resources/sample.json
+++ b/Example/SampleApp/Forms/sample.json
@@ -10,9 +10,6 @@
{"type":"QBooleanElement", "title":"Boolean", "boolValue":1},
{"type":"QButtonElement", "title":"Button"},
{"type":"QDateTimeInlineElement", "title":"DateTime Inline"},
- {"type":"QPickerElement", "title":"Picker1", "items":[["Blue", "Yellow", "Green"]]},
- {"type":"QPickerElement", "title":"Picker2", "items":[[1, 2, 3], ["Blue", "Yellow", "Green"]]},
- {"type":"QPickerElement", "title":"Picker3", "items":[[1, 2, 3], ["Blue", "Yellow", "Green"], ["Metal","Chrome","Wood"]]},
{"type":"QMapElement", "title":"Map", "lat":-27.59, "lng":-48.55},
{"type":"QRadioElement", "title":"Radio", "items":["Option 1", "Option 2", "Final option"], "selected":2},
{"type":"QTextElement", "text":"Text Element"},
diff --git a/Example/SampleApp/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/SampleApp/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..91bf9c14
--- /dev/null
+++ b/Example/SampleApp/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,53 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "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"
+ }
+}
\ No newline at end of file
diff --git a/Example/SampleApp/Images.xcassets/LaunchImage.launchimage/Contents.json b/Example/SampleApp/Images.xcassets/LaunchImage.launchimage/Contents.json
new file mode 100644
index 00000000..6f870a46
--- /dev/null
+++ b/Example/SampleApp/Images.xcassets/LaunchImage.launchimage/Contents.json
@@ -0,0 +1,51 @@
+{
+ "images" : [
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "iphone",
+ "subtype" : "retina4",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/sample/Resources/footer.png b/Example/SampleApp/Images/footer.png
similarity index 100%
rename from sample/Resources/footer.png
rename to Example/SampleApp/Images/footer.png
diff --git a/sample/Resources/footer@2x.png b/Example/SampleApp/Images/footer@2x.png
similarity index 100%
rename from sample/Resources/footer@2x.png
rename to Example/SampleApp/Images/footer@2x.png
diff --git a/sample/Resources/iPhone.png b/Example/SampleApp/Images/iPhone.png
similarity index 100%
rename from sample/Resources/iPhone.png
rename to Example/SampleApp/Images/iPhone.png
diff --git a/sample/Resources/imgOff.png b/Example/SampleApp/Images/imgOff.png
similarity index 100%
rename from sample/Resources/imgOff.png
rename to Example/SampleApp/Images/imgOff.png
diff --git a/sample/Resources/imgOn.png b/Example/SampleApp/Images/imgOn.png
similarity index 100%
rename from sample/Resources/imgOn.png
rename to Example/SampleApp/Images/imgOn.png
diff --git a/sample/Resources/intel.png b/Example/SampleApp/Images/intel.png
similarity index 100%
rename from sample/Resources/intel.png
rename to Example/SampleApp/Images/intel.png
diff --git a/sample/Resources/keyboard.png b/Example/SampleApp/Images/keyboard.png
similarity index 100%
rename from sample/Resources/keyboard.png
rename to Example/SampleApp/Images/keyboard.png
diff --git a/sample/Resources/quickdialog.png b/Example/SampleApp/Images/quickdialog.png
similarity index 100%
rename from sample/Resources/quickdialog.png
rename to Example/SampleApp/Images/quickdialog.png
diff --git a/sample/Resources/quickdialog@2x.png b/Example/SampleApp/Images/quickdialog@2x.png
similarity index 100%
rename from sample/Resources/quickdialog@2x.png
rename to Example/SampleApp/Images/quickdialog@2x.png
diff --git a/Example/SampleApp/QDAppDelegate.h b/Example/SampleApp/QDAppDelegate.h
new file mode 100644
index 00000000..fdfbd0ea
--- /dev/null
+++ b/Example/SampleApp/QDAppDelegate.h
@@ -0,0 +1,15 @@
+//
+// QDAppDelegate.h
+// SampleApp
+//
+// Created by Eduardo Scoz on 5/26/14.
+// Copyright (c) 2014 ESCOZ inc. All rights reserved.
+//
+
+#import
+
+@interface QDAppDelegate : UIResponder
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
\ No newline at end of file
diff --git a/Example/SampleApp/QDAppDelegate.m b/Example/SampleApp/QDAppDelegate.m
new file mode 100644
index 00000000..05d5446b
--- /dev/null
+++ b/Example/SampleApp/QDAppDelegate.m
@@ -0,0 +1,38 @@
+//
+// QDAppDelegate.m
+// SampleApp
+//
+// Created by Eduardo Scoz on 5/26/14.
+// Copyright (c) 2014 ESCOZ inc. All rights reserved.
+//
+
+#import "QDAppDelegate.h"
+#import "ExampleViewController.h"
+#import "SampleDataBuilder.h"
+
+@implementation QDAppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+ QRootElement *root = [SampleDataBuilder create];
+ ExampleViewController *exampleController = [[ExampleViewController alloc] initWithRoot:root];
+ UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:exampleController];
+ if ([UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPhone) {
+ self.window.rootViewController = nav;
+ } else {
+ UISplitViewController *split = [[UISplitViewController alloc] init];
+ split.delegate = self;
+ split.viewControllers = @[nav, [[UINavigationController alloc] initWithRootViewController:[QuickDialogController new]]];
+ self.window.rootViewController = split;
+ }
+ [self.window makeKeyAndVisible];
+ return YES;
+}
+
+- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation {
+ return NO;
+}
+
+
+@end
\ No newline at end of file
diff --git a/Example/SampleApp/SampleApp-Info.plist b/Example/SampleApp/SampleApp-Info.plist
new file mode 100644
index 00000000..5834d8f9
--- /dev/null
+++ b/Example/SampleApp/SampleApp-Info.plist
@@ -0,0 +1,48 @@
+
+
+
+
+
+ CFBundleIdentifier
+ com.escoz.${PRODUCT_NAME:rfc1034identifier}
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ ????
+
+ CFBundleDisplayName
+ ${PRODUCT_NAME}
+ CFBundleVersion
+ 1.0
+ CFBundleShortVersionString
+ 1.0
+ LSRequiresIPhoneOS
+
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
\ No newline at end of file
diff --git a/Example/SampleApp/SampleApp-Prefix.pch b/Example/SampleApp/SampleApp-Prefix.pch
new file mode 100644
index 00000000..fa4c0d4d
--- /dev/null
+++ b/Example/SampleApp/SampleApp-Prefix.pch
@@ -0,0 +1,14 @@
+//
+// Prefix header
+//
+// The contents of this file are implicitly included at the beginning of every source file.
+//
+
+#import
+
+#ifdef __OBJC__
+
+#import
+#import
+#import
+#endif
\ No newline at end of file
diff --git a/sample/en.lproj/InfoPlist.strings b/Example/SampleApp/en.lproj/InfoPlist.strings
similarity index 97%
rename from sample/en.lproj/InfoPlist.strings
rename to Example/SampleApp/en.lproj/InfoPlist.strings
index 477b28ff..b92732c7 100644
--- a/sample/en.lproj/InfoPlist.strings
+++ b/Example/SampleApp/en.lproj/InfoPlist.strings
@@ -1,2 +1 @@
/* Localized versions of Info.plist keys */
-
diff --git a/Example/SampleApp/main.m b/Example/SampleApp/main.m
new file mode 100644
index 00000000..81da69fe
--- /dev/null
+++ b/Example/SampleApp/main.m
@@ -0,0 +1,19 @@
+//
+// main.m
+// SampleApp
+//
+// Created by Eduardo Scoz on 5/26/14.
+// Copyright (c) 2014 ESCOZ inc. All rights reserved.
+//
+
+#import
+
+#import "QDAppDelegate.h"
+
+int main(int argc, char * argv[])
+{
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([QDAppDelegate class]));
+ }
+
+}
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index ed44f21d..709a5904 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,14 +1,19 @@
-Copyright 2011 ESCOZ Inc - http://escoz.com
+Copyright (c) 2014 Eduardo Scoz
---------
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
-file except in compliance with the License. You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software distributed under
-the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
-ANY KIND, either express or implied. See the License for the specific language governing
-permissions and limitations under the License.
+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.
diff --git a/QDateInlineTableViewCell.h b/QDateInlineTableViewCell.h
deleted file mode 100644
index 62ff8c68..00000000
--- a/QDateInlineTableViewCell.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// Created by Eduardo Scoz on 1/11/14.
-//
-
-#import
-
-
-@interface QDateInlineTableViewCell : QTableViewCell
-
-- (void)prepareForElement:(QDateTimeInlineElement *)element inTableView:(QuickDialogTableView *)tableView;
-
-@end
-
-
diff --git a/QuickDialog.podspec b/QuickDialog.podspec
index cf1a28bf..99b9538a 100644
--- a/QuickDialog.podspec
+++ b/QuickDialog.podspec
@@ -1,48 +1,47 @@
+#
+# Be sure to run `pod lib lint NAME.podspec' to ensure this is a
+# valid spec and remove all comments before submitting the spec.
+#
+# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
+#
Pod::Spec.new do |s|
- s.name = 'QuickDialog'
- s.version = '1.0'
- s.platform = :ios, '5.0'
- s.license = 'Apache License, Version 2.0'
- s.summary = 'Quick and easy dialog screens for iOS.'
- s.homepage = 'http://escoz.com/quickdialog'
- s.author = { 'Eduardo Scoz' => 'contact@escoz.com' }
- s.source = { :git => 'https://github.com/escoz/QuickDialog.git', :tag => "#{s.version}" }
-
- s.description = 'QuickDialog allows you to create HIG-compliant iOS forms for your apps without ' \
- 'having to directly deal with UITableViews, delegates and data sources. Fast ' \
- 'and efficient, you can create forms with multiple text fields, or with ' \
- 'thousands of items with no sweat!'
+ s.name = "QuickDialog"
+ s.version = "2.0.0"
+ s.summary = "Quick and easy dialog screens for iOS."
+ s.description = <<-DESC
+ QuickDialog allows you to create HIG-compliant iOS forms for your apps without
+ having to directly deal with UITableViews, delegates and data sources. Fast
+ and efficient, you can create forms with multiple text fields, or with
+ thousands of items with no sweat!
+ DESC
+ s.homepage = "http://escoz.com/quickdialog"
+ #s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
+ s.license = 'Apache License, Version 2.0'
+ s.author = { "Eduardo Scoz" => "eduardoscoz@gmail.com" }
+ s.source = { :git => "https://github.com/escoz/QuickDialog.git", :tag => s.version.to_s }
+ s.social_media_url = 'https://twitter.com/escoz'
+ s.platform = :ios, '7.0'
s.requires_arc = true
- s.default_subspec = "Core"
- s.subspec "Core" do |sp|
- sp.source_files = 'quickdialog', '*.{h,m}'
- end
-
- s.subspec "Extras" do |sp|
- sp.source_files = 'extras', '*.{h,m}'
- end
+ s.default_subspec = "Forms"
- s.subspec "QPicker" do |sp|
- sp.source_files = 'extras/QPicker*.{h,m}'
- end
- s.subspec "QMail" do |sp|
- sp.source_files = 'extras/QMail*.{h,m}'
- end
- s.subspec "QMap" do |sp|
- sp.source_files = 'extras/QMap*.{h,m}'
+ s.subspec "Core" do |sp|
+ sp.source_files = "Classes/Core/*.{h,m}"
+ sp.public_header_files = "Classes/Core/*.h"
+ sp.resources = ["Assets/Core/*"]
end
- s.subspec "QWeb" do |sp|
- sp.source_files = 'extras/QWeb*.{h,m}'
+
+ s.subspec "Forms" do |sp|
+ sp.source_files = "Classes/Forms/*.{h,m}"
+ sp.public_header_files = "Classes/Forms/*.h"
+ sp.dependency "QuickDialog/Core"
end
- s.subspec "QColor" do |sp|
- sp.source_files = 'extras/QColor*.{h,m}', 'extras/UIColor*.{h,m}'
+
+ s.subspec "Extras" do |sp|
+ sp.source_files = "Classes/Extras/*.{h,m}"
+ sp.public_header_files = "Classes/Extras/*.h"
+ sp.dependency 'QuickDialog/Forms'
end
- s.prefix_header_contents = <<-EOS
-#ifdef __OBJC__
- #import "QuickDialog.h"
-#endif
-EOS
end
diff --git a/QuickDialog.xcodeproj/navigation.json b/QuickDialog.xcodeproj/navigation.json
deleted file mode 100644
index 2e5beab0..00000000
--- a/QuickDialog.xcodeproj/navigation.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "grouped": true,
- "title": "Navigation",
- "sections": [
- { "elements": [
- { "type":"QButtonElement", "key":"button", "title":"Mode: Normal", "presentationMode":"Normal",
- "sections": [
- { "title":"Inside Popup", "elements": [
- { "type":"QLabelElement", "title":"something here"}
- ]
- }
- ]
- }
- ]
- },
- { "elements": [
- { "type":"QButtonElement", "key":"button", "title":"Mode: Popover", "presentationMode":"Popover",
- "sections": [
- { "title":"Inside Popup", "elements": [
- { "type":"QLabelElement", "title":"something here"}
- ]
- }
- ]
- }
- ]
- },
- { "elements": [
- { "type":"QButtonElement", "key":"button", "title":"Mode: NavigationInPopover", "presentationMode":"NavigationInPopover",
- "sections": [
- { "title":"Inside Popup", "elements": [
- { "type":"QLabelElement", "title":"something here"}
- ]
- }
- ]
- }
- ]
- },
- { "elements": [
- { "type":"QButtonElement", "key":"button", "title":"Mode: ModalForm", "presentationMode":"ModalForm",
- "sections": [
- { "title":"Inside Popup", "elements": [
- { "type":"QLabelElement", "title":"something here"}
- ]
- }
- ]
- }
- ]
- },
- { "elements": [
- { "type":"QButtonElement", "key":"button", "title":"Mode: ModalFullScreen", "presentationMode":"ModalFullScreen",
- "sections": [
- { "title":"Inside Popup", "elements": [
- { "type":"QLabelElement", "title":"something here"}
- ]
- }
- ]
- }
- ]
- },
- { "elements": [
- { "type":"QButtonElement", "key":"button", "title":"Mode: ModalPage", "presentationMode":"ModalPage",
- "sections": [
- { "title":"Inside Popup", "elements": [
- { "type":"QLabelElement", "title":"something here"}
- ]
- }
- ]
- }
- ]
- }
- ]
-}
diff --git a/QuickDialog.xcodeproj/project.pbxproj b/QuickDialog.xcodeproj/project.pbxproj
deleted file mode 100644
index aed212e5..00000000
--- a/QuickDialog.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,1176 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 194C3FC214EDF0510036C9E7 /* DOAutocompleteTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 194C3FC014EDF0510036C9E7 /* DOAutocompleteTextField.h */; };
- 194C3FC314EDF0510036C9E7 /* DOAutocompleteTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 194C3FC114EDF0510036C9E7 /* DOAutocompleteTextField.m */; };
- 2C542394145ADEBD0026A152 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D80B0E3913E052DF00FA85CA /* Foundation.framework */; };
- 2C54239F145ADF2B0026A152 /* QuickDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0C9E /* QuickDialog.h */; settings = {ATTRIBUTES = (); }; };
- 2C5423A1145ADF2B0026A152 /* QDecimalTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0C9A /* QDecimalTableViewCell.m */; };
- 2C5423A3145ADF2B0026A152 /* QDecimalElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0C97 /* QDecimalElement.m */; };
- 2C5423A5145ADF2B0026A152 /* QBadgeElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F88513EC905B00E3922B /* QBadgeElement.m */; };
- 2C5423A7145ADF2B0026A152 /* QBadgeTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F88713EC905B00E3922B /* QBadgeTableCell.m */; };
- 2C5423A9145ADF2B0026A152 /* QBooleanElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F88913EC905B00E3922B /* QBooleanElement.m */; };
- 2C5423AB145ADF2B0026A152 /* QButtonElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F88B13EC905B00E3922B /* QButtonElement.m */; };
- 2C5423AD145ADF2B0026A152 /* QDateEntryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F88D13EC905B00E3922B /* QDateEntryTableViewCell.m */; };
- 2C5423AF145ADF2B0026A152 /* QDateTimeElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F88F13EC905B00E3922B /* QDateTimeElement.m */; };
- 2C5423B1145ADF2B0026A152 /* QDateTimeInlineElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F89113EC905B00E3922B /* QDateTimeInlineElement.m */; };
- 2C5423B3145ADF2B0026A152 /* QElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F89313EC905B00E3922B /* QElement.m */; };
- 2C5423B5145ADF2B0026A152 /* QEntryElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F89513EC905B00E3922B /* QEntryElement.m */; };
- 2C5423B7145ADF2B0026A152 /* QEntryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F89713EC905B00E3922B /* QEntryTableViewCell.m */; };
- 2C5423B9145ADF2B0026A152 /* QFloatElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F89913EC905B00E3922B /* QFloatElement.m */; };
- 2C5423BB145ADF2B0026A152 /* QLabelElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F89B13EC905B00E3922B /* QLabelElement.m */; };
- 2C5423C3145ADF2B0026A152 /* QuickDialogController.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8A313EC905B00E3922B /* QuickDialogController.m */; };
- 2C5423C5145ADF2B0026A152 /* QuickDialogController+Loading.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8A513EC905B00E3922B /* QuickDialogController+Loading.m */; };
- 2C5423C7145ADF2B0026A152 /* QuickDialogDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8A713EC905B00E3922B /* QuickDialogDataSource.m */; };
- 2C5423CA145ADF2B0026A152 /* QuickDialogTableDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8AA13EC905B00E3922B /* QuickDialogTableDelegate.m */; };
- 2C5423CC145ADF2B0026A152 /* QuickDialogTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8AC13EC905B00E3922B /* QuickDialogTableView.m */; };
- 2C5423CF145ADF2B0026A152 /* QRadioElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8AF13EC905B00E3922B /* QRadioElement.m */; };
- 2C5423D1145ADF2B0026A152 /* QRadioItemElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8B113EC905B00E3922B /* QRadioItemElement.m */; };
- 2C5423D3145ADF2B0026A152 /* QRadioSection.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8B313EC905B00E3922B /* QRadioSection.m */; };
- 2C5423D5145ADF2B0026A152 /* QRootElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8B513EC905B00E3922B /* QRootElement.m */; };
- 2C5423D7145ADF2B0026A152 /* QSection.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8B713EC905B00E3922B /* QSection.m */; };
- 2C5423D9145ADF2B0026A152 /* QSortingSection.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8B913EC905B00E3922B /* QSortingSection.m */; };
- 2C5423DB145ADF2B0026A152 /* QTextElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8BB13EC905B00E3922B /* QTextElement.m */; };
- 2CE450B3145AE43D00B77D0E /* libQuickDialog.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C542393145ADEBD0026A152 /* libQuickDialog.a */; };
- 5C50E1652D781293C5963717 /* themes.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E2CE6D8D6B3DD766CCCC /* themes.json */; };
- 5C50E18E8FEC2BCC8B8C12EA /* QMapAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E56A3F1DC223669D7417 /* QMapAnnotation.m */; };
- 5C50E1E06A0557312EB9B187 /* QAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C50EB0025DCEF8A3740C477 /* QAppearance.h */; };
- 5C50E215ECB7C7D4B503AA4C /* QuickDialogController+Animations.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EBF53D28B761CBA809FF /* QuickDialogController+Animations.m */; };
- 5C50E2B67E1D64DAE87FD81D /* QPickerTabDelimitedStringParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E498C230A92D1BD3C3EA /* QPickerTabDelimitedStringParser.m */; };
- 5C50E343ABC2679C20372B2D /* QDateInlineTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EBEE72341BBE7219C06E /* QDateInlineTableViewCell.m */; };
- 5C50E4FA7CB1F9ECA0B950F3 /* QDateInlineTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C50E0ECCB367417713A7F87 /* QDateInlineTableViewCell.h */; };
- 5C50E65C85040A1F79EAD648 /* QMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EFD565900926223F50D4 /* QMapViewController.m */; };
- 5C50E665E1BD1D5B1B8B944E /* navigation.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C50E404FC15CFA443ABBB5C /* navigation.json */; };
- 5C50E6D6FE14BF78231F9671 /* QuickDialogController+Animations.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C50E22D2B906D69252BE7B4 /* QuickDialogController+Animations.h */; };
- 5C50E7FD1C54757459D8F88B /* QPickerTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EA8E14F439693332B438 /* QPickerTableViewCell.m */; };
- 5C50E814B8FABFE9A6509398 /* QuickDialogDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C50E2AA6DF16A845C049EAE /* QuickDialogDelegate.h */; };
- 5C50E81524FD5F3E540B4D83 /* QPickerElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E32E2F0A5EF03EB569E9 /* QPickerElement.m */; };
- 5C50E98463F3848733205310 /* QMailElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E5ABA79D20529225F870 /* QMailElement.m */; };
- 5C50EAFF93AE7374E94BEBAE /* QColorPickerElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50EAFF4C085E41DE56306E /* QColorPickerElement.m */; };
- 5C50EB6A5469607BDA08A4F0 /* QWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E4957330C22B16CE6938 /* QWebViewController.m */; };
- 5C50EF790D3A46FEDCDF0FA0 /* QMapElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E5B0F3DD0967B8186785 /* QMapElement.m */; };
- 5C50EFADB34DF61735763BCF /* UIColor+ColorUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E4D5FFEF3EC8D7D7C219 /* UIColor+ColorUtilities.m */; };
- 5C50EFD5861E1FE78AD17F06 /* QWebElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C50E93B5273C6D9050767C6 /* QWebElement.m */; };
- D80B0E3813E052DF00FA85CA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D80B0E3713E052DF00FA85CA /* UIKit.framework */; };
- D80B0E3A13E052DF00FA85CA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D80B0E3913E052DF00FA85CA /* Foundation.framework */; };
- D80B0E3C13E052DF00FA85CA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D80B0E3B13E052DF00FA85CA /* CoreGraphics.framework */; };
- D80F571F17E115580052EBE3 /* QClassicAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = D80F571B17E115580052EBE3 /* QClassicAppearance.h */; };
- D80F572017E115580052EBE3 /* QClassicAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = D80F571C17E115580052EBE3 /* QClassicAppearance.m */; };
- D80F572117E115580052EBE3 /* QFlatAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = D80F571D17E115580052EBE3 /* QFlatAppearance.h */; };
- D80F572217E115580052EBE3 /* QFlatAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = D80F571E17E115580052EBE3 /* QFlatAppearance.m */; };
- D80F572617E1162B0052EBE3 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D80F572317E1162A0052EBE3 /* icon.png */; };
- D80F572717E1162B0052EBE3 /* icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D80F572417E1162A0052EBE3 /* icon@2x.png */; };
- D80F572817E1162B0052EBE3 /* iconIpad.png in Resources */ = {isa = PBXBuildFile; fileRef = D80F572517E1162A0052EBE3 /* iconIpad.png */; };
- D811F8FB13EC907200E3922B /* AboutController.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8DE13EC907200E3922B /* AboutController.m */; };
- D811F8FC13EC907200E3922B /* SampleDataBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8E013EC907200E3922B /* SampleDataBuilder.m */; };
- D811F8FE13EC907200E3922B /* LoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8E513EC907200E3922B /* LoginController.m */; };
- D811F8FF13EC907200E3922B /* LoginInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8E713EC907200E3922B /* LoginInfo.m */; };
- D811F90013EC907200E3922B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8E813EC907200E3922B /* main.m */; };
- D811F90213EC907200E3922B /* ExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8EC13EC907200E3922B /* ExampleAppDelegate.m */; };
- D811F90313EC907200E3922B /* ExampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D811F8EE13EC907200E3922B /* ExampleViewController.m */; };
- D811F90413EC907200E3922B /* footer.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F013EC907200E3922B /* footer.png */; };
- D811F90513EC907200E3922B /* footer@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F113EC907200E3922B /* footer@2x.png */; };
- D811F90613EC907200E3922B /* imgOff.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F213EC907200E3922B /* imgOff.png */; };
- D811F90713EC907200E3922B /* imgOn.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F313EC907200E3922B /* imgOn.png */; };
- D811F90813EC907200E3922B /* intel.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F413EC907200E3922B /* intel.png */; };
- D811F90913EC907200E3922B /* iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F513EC907200E3922B /* iPhone.png */; };
- D811F90A13EC907200E3922B /* keyboard.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F613EC907200E3922B /* keyboard.png */; };
- D811F90B13EC907200E3922B /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F713EC907200E3922B /* logo.png */; };
- D811F90C13EC907200E3922B /* logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D811F8F813EC907200E3922B /* logo@2x.png */; };
- D81F2ED714BBAFCE0066C372 /* QRootBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CB8 /* QRootBuilder.h */; settings = {ATTRIBUTES = (); }; };
- D81F2ED814BBAFCE0066C372 /* QBindingEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CB4 /* QBindingEvaluator.h */; settings = {ATTRIBUTES = (); }; };
- D81F2ED914BBAFCE0066C372 /* QBadgeLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CA9 /* QBadgeLabel.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EDA14BBAFCE0066C372 /* QDecimalTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0C9C /* QDecimalTableViewCell.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EDB14BBAFCE0066C372 /* QDecimalElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0C99 /* QDecimalElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EDC14BBAFCE0066C372 /* QBadgeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F88413EC905B00E3922B /* QBadgeElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EDD14BBAFCE0066C372 /* QBadgeTableCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F88613EC905B00E3922B /* QBadgeTableCell.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EDE14BBAFCE0066C372 /* QBooleanElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F88813EC905B00E3922B /* QBooleanElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EDF14BBAFCE0066C372 /* QButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F88A13EC905B00E3922B /* QButtonElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE014BBAFCE0066C372 /* QDateEntryTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F88C13EC905B00E3922B /* QDateEntryTableViewCell.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE114BBAFCE0066C372 /* QDateTimeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F88E13EC905B00E3922B /* QDateTimeElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE214BBAFCE0066C372 /* QDateTimeInlineElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F89013EC905B00E3922B /* QDateTimeInlineElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE314BBAFCE0066C372 /* QElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F89213EC905B00E3922B /* QElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE414BBAFCE0066C372 /* QEntryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F89413EC905B00E3922B /* QEntryElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE514BBAFCE0066C372 /* QEntryTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F89613EC905B00E3922B /* QEntryTableViewCell.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE614BBAFCE0066C372 /* QFloatElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F89813EC905B00E3922B /* QFloatElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EE714BBAFCE0066C372 /* QLabelElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F89A13EC905B00E3922B /* QLabelElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EEB14BBAFCE0066C372 /* QuickDialogController.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8A213EC905B00E3922B /* QuickDialogController.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EEC14BBAFCE0066C372 /* QuickDialogController+Loading.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8A413EC905B00E3922B /* QuickDialogController+Loading.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EED14BBAFCE0066C372 /* QuickDialogDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8A613EC905B00E3922B /* QuickDialogDataSource.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EEF14BBAFCE0066C372 /* QuickDialogTableDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8A913EC905B00E3922B /* QuickDialogTableDelegate.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF014BBAFCE0066C372 /* QuickDialogTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8AB13EC905B00E3922B /* QuickDialogTableView.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF114BBAFCE0066C372 /* QRadioElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8AE13EC905B00E3922B /* QRadioElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF214BBAFCE0066C372 /* QRadioItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8B013EC905B00E3922B /* QRadioItemElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF314BBAFCE0066C372 /* QRadioSection.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8B213EC905B00E3922B /* QRadioSection.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF414BBAFCE0066C372 /* QRootElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8B413EC905B00E3922B /* QRootElement.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF514BBAFCE0066C372 /* QRootElement+JsonBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = D871018414BB3D7A00156D9D /* QRootElement+JsonBuilder.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF614BBAFCE0066C372 /* QSection.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8B613EC905B00E3922B /* QSection.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF714BBAFCE0066C372 /* QSortingSection.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8B813EC905B00E3922B /* QSortingSection.h */; settings = {ATTRIBUTES = (); }; };
- D81F2EF814BBAFCE0066C372 /* QTextElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D811F8BA13EC905B00E3922B /* QTextElement.h */; settings = {ATTRIBUTES = (); }; };
- D82A4AF317BEE90E000986C8 /* QFloatTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D82A4AEF17BEE90E000986C8 /* QFloatTableViewCell.h */; };
- D82A4AF417BEE90E000986C8 /* QFloatTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D82A4AF017BEE90E000986C8 /* QFloatTableViewCell.m */; };
- D82A4AF517BEE90E000986C8 /* QProgressElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D82A4AF117BEE90E000986C8 /* QProgressElement.h */; };
- D82A4AF617BEE90E000986C8 /* QProgressElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D82A4AF217BEE90E000986C8 /* QProgressElement.m */; };
- D82A4B0017BEF033000986C8 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D82A4AFF17BEF033000986C8 /* MessageUI.framework */; };
- D83BD546169661EA00188061 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D83BD545169661EA00188061 /* Default-568h@2x.png */; };
- D86249F914BB5AB5002F0585 /* jsonadvancedsample.json in Resources */ = {isa = PBXBuildFile; fileRef = D86249F514BB5AB5002F0585 /* jsonadvancedsample.json */; };
- D86249FA14BB5AB5002F0585 /* jsondatasample.json in Resources */ = {isa = PBXBuildFile; fileRef = D86249F614BB5AB5002F0585 /* jsondatasample.json */; };
- D86249FB14BB5AB5002F0585 /* loginform.json in Resources */ = {isa = PBXBuildFile; fileRef = D86249F714BB5AB5002F0585 /* loginform.json */; };
- D86249FC14BB5AB5002F0585 /* sample.json in Resources */ = {isa = PBXBuildFile; fileRef = D86249F814BB5AB5002F0585 /* sample.json */; };
- D871018714BB3D7A00156D9D /* QRootElement+JsonBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = D871018514BB3D7A00156D9D /* QRootElement+JsonBuilder.m */; };
- D87A4D6E169DABA900D4DD63 /* QElement+Appearance.h in Headers */ = {isa = PBXBuildFile; fileRef = D87A4D6C169DABA900D4DD63 /* QElement+Appearance.h */; };
- D87A4D6F169DABA900D4DD63 /* QElement+Appearance.m in Sources */ = {isa = PBXBuildFile; fileRef = D87A4D6D169DABA900D4DD63 /* QElement+Appearance.m */; };
- D87A4D90169DB59500D4DD63 /* QAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = D87A4D8E169DB59500D4DD63 /* QAppearance.h */; };
- D87A4D91169DB59500D4DD63 /* QAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = D87A4D8F169DB59500D4DD63 /* QAppearance.m */; };
- D87B4FCB14F16197006DA833 /* QAutoEntryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D87B4FC514F16197006DA833 /* QAutoEntryElement.h */; };
- D87B4FCC14F16197006DA833 /* QAutoEntryElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D87B4FC614F16197006DA833 /* QAutoEntryElement.m */; };
- D87B4FCD14F16197006DA833 /* QAutoEntryTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D87B4FC714F16197006DA833 /* QAutoEntryTableViewCell.h */; };
- D87B4FCE14F16197006DA833 /* QAutoEntryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D87B4FC814F16197006DA833 /* QAutoEntryTableViewCell.m */; };
- D8820B5116A246860070AE22 /* QCountdownElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8820B4F16A246860070AE22 /* QCountdownElement.h */; };
- D8820B5216A246860070AE22 /* QCountdownElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8820B5016A246860070AE22 /* QCountdownElement.m */; };
- D8820C7D16A3543D0070AE22 /* QImageElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8820C7716A352990070AE22 /* QImageElement.m */; };
- D8820C7E16A3543F0070AE22 /* QImageTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D8820C7916A352990070AE22 /* QImageTableViewCell.m */; };
- D8820C7F16A3544C0070AE22 /* QImageElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8820C7616A352990070AE22 /* QImageElement.h */; };
- D8820C8016A3544F0070AE22 /* QImageTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D8820C7816A352990070AE22 /* QImageTableViewCell.h */; };
- D894F38A15559D34000E3C0F /* NSMutableArray+IMSExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = D894F38815559D34000E3C0F /* NSMutableArray+IMSExtensions.h */; };
- D894F38B15559D34000E3C0F /* NSMutableArray+IMSExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = D894F38915559D34000E3C0F /* NSMutableArray+IMSExtensions.m */; };
- D8A3DD87146045F000DE3528 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D8A3DD86146045F000DE3528 /* Localizable.strings */; };
- D8B39450151394E1008ECB34 /* QEmptyListElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B39449151394E1008ECB34 /* QEmptyListElement.h */; };
- D8B39451151394E1008ECB34 /* QEmptyListElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8B3944A151394E1008ECB34 /* QEmptyListElement.m */; };
- D8B39452151394E1008ECB34 /* QMultilineElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B3944B151394E1008ECB34 /* QMultilineElement.h */; };
- D8B39453151394E1008ECB34 /* QMultilineElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8B3944C151394E1008ECB34 /* QMultilineElement.m */; };
- D8B39455151394E1008ECB34 /* QMultilineTextViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B3944E151394E1008ECB34 /* QMultilineTextViewController.h */; };
- D8B39456151394E1008ECB34 /* QMultilineTextViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D8B3944F151394E1008ECB34 /* QMultilineTextViewController.m */; };
- D8B394691514E8B3008ECB34 /* QSegmentedElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B394671514E8B3008ECB34 /* QSegmentedElement.h */; };
- D8B3946A1514E8B3008ECB34 /* QSegmentedElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8B394681514E8B3008ECB34 /* QSegmentedElement.m */; };
- D8D0294217BEDA4D00D9B6CE /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8D0294117BEDA4D00D9B6CE /* MapKit.framework */; };
- D8D0294417BEDA5200D9B6CE /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8D0294317BEDA5200D9B6CE /* CoreLocation.framework */; };
- D8E0748E165A7D08004E7035 /* QuickDialogController+Navigation.h in Headers */ = {isa = PBXBuildFile; fileRef = D8E0748C165A7D08004E7035 /* QuickDialogController+Navigation.h */; };
- D8E0748F165A7D08004E7035 /* QuickDialogController+Navigation.m in Sources */ = {isa = PBXBuildFile; fileRef = D8E0748D165A7D08004E7035 /* QuickDialogController+Navigation.m */; };
- D8F180E713F0599A009B0C96 /* quickdialog.png in Resources */ = {isa = PBXBuildFile; fileRef = D8F180E513F0599A009B0C96 /* quickdialog.png */; };
- D8F180E813F0599A009B0C96 /* quickdialog@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D8F180E613F0599A009B0C96 /* quickdialog@2x.png */; };
- D8F180E813F0599A009B0CA8 /* QBadgeLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CA7 /* QBadgeLabel.m */; };
- D8F180E813F0599A009B0CAC /* JsonDataSampleController.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CAB /* JsonDataSampleController.m */; };
- D8F180E813F0599A009B0CB3 /* QBindingEvaluator.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CB2 /* QBindingEvaluator.m */; };
- D8F180E813F0599A009B0CB7 /* QRootBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CB6 /* QRootBuilder.m */; };
- D8F180E813F0599A009B0CBA /* QuickDialogEntryElementDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CB9 /* QuickDialogEntryElementDelegate.h */; };
- D8F180E813F0599A009B0CBC /* QLoadingElement.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CBB /* QLoadingElement.m */; };
- D8F180E813F0599A009B0CBE /* QLoadingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CBD /* QLoadingElement.h */; };
- D8F180E813F0599A009B0CC0 /* QDynamicDataSection.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CBF /* QDynamicDataSection.m */; };
- D8F180E813F0599A009B0CC2 /* QDynamicDataSection.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CC1 /* QDynamicDataSection.h */; };
- D8F180E813F0599A009B0CC4 /* QTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CC3 /* QTableViewCell.m */; };
- D8F180E813F0599A009B0CC6 /* QTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CC5 /* QTableViewCell.h */; };
- D8F180E813F0599A009B0CC8 /* NSMutableArray+MoveObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CC7 /* NSMutableArray+MoveObject.m */; };
- D8F180E813F0599A009B0CCA /* NSMutableArray+MoveObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CC9 /* NSMutableArray+MoveObject.h */; };
- D8F180E813F0599A009B0CD0 /* jsonremote.json in Resources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CCF /* jsonremote.json */; };
- D8F180E813F0599A009B0CD2 /* QuickDialogWebController.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CD1 /* QuickDialogWebController.m */; };
- D8F180E813F0599A009B0CD4 /* QuickDialogWebController.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F180E813F0599A009B0CD3 /* QuickDialogWebController.h */; };
- F209CEE41536AB100043F61C /* PeriodPickerValueParser.m in Sources */ = {isa = PBXBuildFile; fileRef = F209CEE31536AB100043F61C /* PeriodPickerValueParser.m */; };
- F2304357156CDFDD006D0A56 /* QTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = F2304355156CDFDD006D0A56 /* QTextField.h */; };
- F2304358156CDFDD006D0A56 /* QTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = F2304356156CDFDD006D0A56 /* QTextField.m */; };
- F2E6149E151C9E4D00F36976 /* QSelectSection.h in Headers */ = {isa = PBXBuildFile; fileRef = F2E6149C151C9E4D00F36976 /* QSelectSection.h */; };
- F2E6149F151C9E4D00F36976 /* QSelectSection.m in Sources */ = {isa = PBXBuildFile; fileRef = F2E6149D151C9E4D00F36976 /* QSelectSection.m */; };
- F2E614A2151CA1A100F36976 /* QSelectItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F2E614A0151CA1A100F36976 /* QSelectItemElement.h */; };
- F2E614A3151CA1A100F36976 /* QSelectItemElement.m in Sources */ = {isa = PBXBuildFile; fileRef = F2E614A1151CA1A100F36976 /* QSelectItemElement.m */; };
- F2F23A26152DD48B00EB6687 /* QuickDialogController+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = F2F23A26152DD48B00EB6686 /* QuickDialogController+Helpers.m */; };
- F2F23A26152DD48B00EB6689 /* QuickDialogController+Helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F2F23A26152DD48B00EB6688 /* QuickDialogController+Helpers.h */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 2CE450B1145AE43700B77D0E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = D80B0E2A13E052DF00FA85CA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 2C542392145ADEBD0026A152;
- remoteInfo = QuickDialog;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 194C3FC014EDF0510036C9E7 /* DOAutocompleteTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOAutocompleteTextField.h; path = quickdialog/DOAutocompleteTextField.h; sourceTree = SOURCE_ROOT; };
- 194C3FC114EDF0510036C9E7 /* DOAutocompleteTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DOAutocompleteTextField.m; path = quickdialog/DOAutocompleteTextField.m; sourceTree = SOURCE_ROOT; };
- 2C542393145ADEBD0026A152 /* libQuickDialog.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libQuickDialog.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 2CE450A9145ADFAC00B77D0E /* libQuickDialog-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "libQuickDialog-Prefix.pch"; path = "libQuickDialog/libQuickDialog-Prefix.pch"; sourceTree = SOURCE_ROOT; };
- 5C50E02C8F4B4A90F96E33D6 /* QMapAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QMapAnnotation.h; sourceTree = ""; };
- 5C50E0ECCB367417713A7F87 /* QDateInlineTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QDateInlineTableViewCell.h; sourceTree = SOURCE_ROOT; };
- 5C50E22D2B906D69252BE7B4 /* QuickDialogController+Animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "QuickDialogController+Animations.h"; path = "quickdialog/QuickDialogController+Animations.h"; sourceTree = SOURCE_ROOT; };
- 5C50E2552AD0DC4C813AF542 /* QPickerTabDelimitedStringParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QPickerTabDelimitedStringParser.h; sourceTree = ""; };
- 5C50E2A0B4D9AE7C4A1D2F71 /* QMapElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QMapElement.h; sourceTree = ""; };
- 5C50E2AA6DF16A845C049EAE /* QuickDialogDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickDialogDelegate.h; sourceTree = SOURCE_ROOT; };
- 5C50E2CE6D8D6B3DD766CCCC /* themes.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = themes.json; path = QuickDialog.xcodeproj/themes.json; sourceTree = SOURCE_ROOT; };
- 5C50E32E2F0A5EF03EB569E9 /* QPickerElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QPickerElement.m; sourceTree = ""; };
- 5C50E404FC15CFA443ABBB5C /* navigation.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = navigation.json; path = QuickDialog.xcodeproj/navigation.json; sourceTree = SOURCE_ROOT; };
- 5C50E4957330C22B16CE6938 /* QWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QWebViewController.m; sourceTree = ""; };
- 5C50E498C230A92D1BD3C3EA /* QPickerTabDelimitedStringParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QPickerTabDelimitedStringParser.m; sourceTree = ""; };
- 5C50E4D5FFEF3EC8D7D7C219 /* UIColor+ColorUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+ColorUtilities.m"; sourceTree = ""; };
- 5C50E503C0E833EBDE810039 /* QMailElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QMailElement.h; sourceTree = ""; };
- 5C50E53A66F53B07BEE29CE5 /* QWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWebViewController.h; sourceTree = ""; };
- 5C50E56A3F1DC223669D7417 /* QMapAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QMapAnnotation.m; sourceTree = ""; };
- 5C50E5ABA79D20529225F870 /* QMailElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QMailElement.m; sourceTree = ""; };
- 5C50E5B0F3DD0967B8186785 /* QMapElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QMapElement.m; sourceTree = ""; };
- 5C50E5DF83EB5A046AD7FA16 /* QMapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QMapViewController.h; sourceTree = ""; };
- 5C50E71B9FC6B0B50346A5D0 /* QPickerTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QPickerTableViewCell.h; sourceTree = ""; };
- 5C50E93B5273C6D9050767C6 /* QWebElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QWebElement.m; sourceTree = ""; };
- 5C50EA8E14F439693332B438 /* QPickerTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QPickerTableViewCell.m; sourceTree = ""; };
- 5C50EAFF4C085E41DE56306E /* QColorPickerElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QColorPickerElement.m; sourceTree = ""; };
- 5C50EB0025DCEF8A3740C477 /* QAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QAppearance.h; path = QuickDialog/quickdialog/QAppearance.h; sourceTree = "