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 = ""; }; - 5C50EB6C6D11D1CE7DA80298 /* QWebElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWebElement.h; sourceTree = ""; }; - 5C50EBEE72341BBE7219C06E /* QDateInlineTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QDateInlineTableViewCell.m; sourceTree = SOURCE_ROOT; }; - 5C50EBF53D28B761CBA809FF /* QuickDialogController+Animations.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Animations.m"; path = "quickdialog/QuickDialogController+Animations.m"; sourceTree = SOURCE_ROOT; }; - 5C50ECD6A4FF1F8136ECB485 /* UIColor+ColorUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+ColorUtilities.h"; sourceTree = ""; }; - 5C50EE213AF724E6D1B766D5 /* QPickerValueParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QPickerValueParser.h; sourceTree = ""; }; - 5C50EED1BB826D7F7B08055A /* QPickerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QPickerElement.h; sourceTree = ""; }; - 5C50EF9F76D029609CD376E2 /* QColorPickerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QColorPickerElement.h; sourceTree = ""; }; - 5C50EFD565900926223F50D4 /* QMapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QMapViewController.m; sourceTree = ""; }; - D80B0E3313E052DF00FA85CA /* QuickDialogExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuickDialogExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D80B0E3713E052DF00FA85CA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - D80B0E3913E052DF00FA85CA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - D80B0E3B13E052DF00FA85CA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - D80F571B17E115580052EBE3 /* QClassicAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QClassicAppearance.h; path = quickdialog/QClassicAppearance.h; sourceTree = SOURCE_ROOT; }; - D80F571C17E115580052EBE3 /* QClassicAppearance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QClassicAppearance.m; path = quickdialog/QClassicAppearance.m; sourceTree = SOURCE_ROOT; }; - D80F571D17E115580052EBE3 /* QFlatAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QFlatAppearance.h; path = quickdialog/QFlatAppearance.h; sourceTree = SOURCE_ROOT; }; - D80F571E17E115580052EBE3 /* QFlatAppearance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QFlatAppearance.m; path = quickdialog/QFlatAppearance.m; sourceTree = SOURCE_ROOT; }; - D80F572317E1162A0052EBE3 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; - D80F572417E1162A0052EBE3 /* icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon@2x.png"; sourceTree = ""; }; - D80F572517E1162A0052EBE3 /* iconIpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconIpad.png; sourceTree = ""; }; - D811F88413EC905B00E3922B /* QBadgeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QBadgeElement.h; path = quickdialog/QBadgeElement.h; sourceTree = SOURCE_ROOT; }; - D811F88513EC905B00E3922B /* QBadgeElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QBadgeElement.m; path = quickdialog/QBadgeElement.m; sourceTree = SOURCE_ROOT; }; - D811F88613EC905B00E3922B /* QBadgeTableCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QBadgeTableCell.h; path = quickdialog/QBadgeTableCell.h; sourceTree = SOURCE_ROOT; }; - D811F88713EC905B00E3922B /* QBadgeTableCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QBadgeTableCell.m; path = quickdialog/QBadgeTableCell.m; sourceTree = SOURCE_ROOT; }; - D811F88813EC905B00E3922B /* QBooleanElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QBooleanElement.h; path = quickdialog/QBooleanElement.h; sourceTree = SOURCE_ROOT; }; - D811F88913EC905B00E3922B /* QBooleanElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QBooleanElement.m; path = quickdialog/QBooleanElement.m; sourceTree = SOURCE_ROOT; }; - D811F88A13EC905B00E3922B /* QButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QButtonElement.h; path = quickdialog/QButtonElement.h; sourceTree = SOURCE_ROOT; }; - D811F88B13EC905B00E3922B /* QButtonElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QButtonElement.m; path = quickdialog/QButtonElement.m; sourceTree = SOURCE_ROOT; }; - D811F88C13EC905B00E3922B /* QDateEntryTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QDateEntryTableViewCell.h; path = quickdialog/QDateEntryTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D811F88D13EC905B00E3922B /* QDateEntryTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QDateEntryTableViewCell.m; path = quickdialog/QDateEntryTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D811F88E13EC905B00E3922B /* QDateTimeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QDateTimeElement.h; path = quickdialog/QDateTimeElement.h; sourceTree = SOURCE_ROOT; }; - D811F88F13EC905B00E3922B /* QDateTimeElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QDateTimeElement.m; path = quickdialog/QDateTimeElement.m; sourceTree = SOURCE_ROOT; }; - D811F89013EC905B00E3922B /* QDateTimeInlineElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QDateTimeInlineElement.h; path = quickdialog/QDateTimeInlineElement.h; sourceTree = SOURCE_ROOT; }; - D811F89113EC905B00E3922B /* QDateTimeInlineElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QDateTimeInlineElement.m; path = quickdialog/QDateTimeInlineElement.m; sourceTree = SOURCE_ROOT; }; - D811F89213EC905B00E3922B /* QElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QElement.h; path = quickdialog/QElement.h; sourceTree = SOURCE_ROOT; }; - D811F89313EC905B00E3922B /* QElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QElement.m; path = quickdialog/QElement.m; sourceTree = SOURCE_ROOT; }; - D811F89413EC905B00E3922B /* QEntryElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QEntryElement.h; path = quickdialog/QEntryElement.h; sourceTree = SOURCE_ROOT; }; - D811F89513EC905B00E3922B /* QEntryElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QEntryElement.m; path = quickdialog/QEntryElement.m; sourceTree = SOURCE_ROOT; }; - D811F89613EC905B00E3922B /* QEntryTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QEntryTableViewCell.h; path = quickdialog/QEntryTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D811F89713EC905B00E3922B /* QEntryTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QEntryTableViewCell.m; path = quickdialog/QEntryTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D811F89813EC905B00E3922B /* QFloatElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QFloatElement.h; path = quickdialog/QFloatElement.h; sourceTree = SOURCE_ROOT; }; - D811F89913EC905B00E3922B /* QFloatElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QFloatElement.m; path = quickdialog/QFloatElement.m; sourceTree = SOURCE_ROOT; }; - D811F89A13EC905B00E3922B /* QLabelElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QLabelElement.h; path = quickdialog/QLabelElement.h; sourceTree = SOURCE_ROOT; }; - D811F89B13EC905B00E3922B /* QLabelElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QLabelElement.m; path = quickdialog/QLabelElement.m; sourceTree = SOURCE_ROOT; }; - D811F8A213EC905B00E3922B /* QuickDialogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialogController.h; path = quickdialog/QuickDialogController.h; sourceTree = SOURCE_ROOT; }; - D811F8A313EC905B00E3922B /* QuickDialogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QuickDialogController.m; path = quickdialog/QuickDialogController.m; sourceTree = SOURCE_ROOT; }; - D811F8A413EC905B00E3922B /* QuickDialogController+Loading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "QuickDialogController+Loading.h"; path = "quickdialog/QuickDialogController+Loading.h"; sourceTree = SOURCE_ROOT; }; - D811F8A513EC905B00E3922B /* QuickDialogController+Loading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Loading.m"; path = "quickdialog/QuickDialogController+Loading.m"; sourceTree = SOURCE_ROOT; }; - D811F8A613EC905B00E3922B /* QuickDialogDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialogDataSource.h; path = quickdialog/QuickDialogDataSource.h; sourceTree = SOURCE_ROOT; }; - D811F8A713EC905B00E3922B /* QuickDialogDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QuickDialogDataSource.m; path = quickdialog/QuickDialogDataSource.m; sourceTree = SOURCE_ROOT; }; - D811F8A913EC905B00E3922B /* QuickDialogTableDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialogTableDelegate.h; path = quickdialog/QuickDialogTableDelegate.h; sourceTree = SOURCE_ROOT; }; - D811F8AA13EC905B00E3922B /* QuickDialogTableDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QuickDialogTableDelegate.m; path = quickdialog/QuickDialogTableDelegate.m; sourceTree = SOURCE_ROOT; }; - D811F8AB13EC905B00E3922B /* QuickDialogTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialogTableView.h; path = quickdialog/QuickDialogTableView.h; sourceTree = SOURCE_ROOT; }; - D811F8AC13EC905B00E3922B /* QuickDialogTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QuickDialogTableView.m; path = quickdialog/QuickDialogTableView.m; sourceTree = SOURCE_ROOT; }; - D811F8AD13EC905B00E3922B /* quickform-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "quickform-Prefix.pch"; path = "quickdialog/quickform-Prefix.pch"; sourceTree = SOURCE_ROOT; }; - D811F8AE13EC905B00E3922B /* QRadioElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QRadioElement.h; path = quickdialog/QRadioElement.h; sourceTree = SOURCE_ROOT; }; - D811F8AF13EC905B00E3922B /* QRadioElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QRadioElement.m; path = quickdialog/QRadioElement.m; sourceTree = SOURCE_ROOT; }; - D811F8B013EC905B00E3922B /* QRadioItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QRadioItemElement.h; path = quickdialog/QRadioItemElement.h; sourceTree = SOURCE_ROOT; }; - D811F8B113EC905B00E3922B /* QRadioItemElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QRadioItemElement.m; path = quickdialog/QRadioItemElement.m; sourceTree = SOURCE_ROOT; }; - D811F8B213EC905B00E3922B /* QRadioSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QRadioSection.h; path = quickdialog/QRadioSection.h; sourceTree = SOURCE_ROOT; }; - D811F8B313EC905B00E3922B /* QRadioSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QRadioSection.m; path = quickdialog/QRadioSection.m; sourceTree = SOURCE_ROOT; }; - D811F8B413EC905B00E3922B /* QRootElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QRootElement.h; path = quickdialog/QRootElement.h; sourceTree = SOURCE_ROOT; }; - D811F8B513EC905B00E3922B /* QRootElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QRootElement.m; path = quickdialog/QRootElement.m; sourceTree = SOURCE_ROOT; }; - D811F8B613EC905B00E3922B /* QSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QSection.h; path = quickdialog/QSection.h; sourceTree = SOURCE_ROOT; }; - D811F8B713EC905B00E3922B /* QSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QSection.m; path = quickdialog/QSection.m; sourceTree = SOURCE_ROOT; }; - D811F8B813EC905B00E3922B /* QSortingSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QSortingSection.h; path = quickdialog/QSortingSection.h; sourceTree = SOURCE_ROOT; }; - D811F8B913EC905B00E3922B /* QSortingSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QSortingSection.m; path = quickdialog/QSortingSection.m; sourceTree = SOURCE_ROOT; }; - D811F8BA13EC905B00E3922B /* QTextElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QTextElement.h; path = quickdialog/QTextElement.h; sourceTree = SOURCE_ROOT; }; - D811F8BB13EC905B00E3922B /* QTextElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QTextElement.m; path = quickdialog/QTextElement.m; sourceTree = SOURCE_ROOT; }; - D811F8DD13EC907200E3922B /* AboutController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AboutController.h; path = sample/AboutController.h; sourceTree = SOURCE_ROOT; }; - D811F8DE13EC907200E3922B /* AboutController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AboutController.m; path = sample/AboutController.m; sourceTree = SOURCE_ROOT; }; - D811F8DF13EC907200E3922B /* SampleDataBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SampleDataBuilder.h; path = sample/SampleDataBuilder.h; sourceTree = SOURCE_ROOT; }; - D811F8E013EC907200E3922B /* SampleDataBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SampleDataBuilder.m; path = sample/SampleDataBuilder.m; sourceTree = SOURCE_ROOT; }; - D811F8E313EC907200E3922B /* InfoPlist.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = InfoPlist.strings; sourceTree = ""; }; - D811F8E413EC907200E3922B /* LoginController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LoginController.h; path = sample/LoginController.h; sourceTree = SOURCE_ROOT; }; - D811F8E513EC907200E3922B /* LoginController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LoginController.m; path = sample/LoginController.m; sourceTree = SOURCE_ROOT; }; - D811F8E613EC907200E3922B /* LoginInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LoginInfo.h; path = sample/LoginInfo.h; sourceTree = SOURCE_ROOT; }; - D811F8E713EC907200E3922B /* LoginInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LoginInfo.m; path = sample/LoginInfo.m; sourceTree = SOURCE_ROOT; }; - D811F8E813EC907200E3922B /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = sample/main.m; sourceTree = SOURCE_ROOT; }; - D811F8E913EC907200E3922B /* quickdialogexample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "quickdialogexample-Info.plist"; path = "sample/quickdialogexample-Info.plist"; sourceTree = SOURCE_ROOT; }; - D811F8EA13EC907200E3922B /* quickdialogexample-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "quickdialogexample-Prefix.pch"; path = "sample/quickdialogexample-Prefix.pch"; sourceTree = SOURCE_ROOT; }; - D811F8EB13EC907200E3922B /* ExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExampleAppDelegate.h; path = sample/ExampleAppDelegate.h; sourceTree = SOURCE_ROOT; }; - D811F8EC13EC907200E3922B /* ExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ExampleAppDelegate.m; path = sample/ExampleAppDelegate.m; sourceTree = SOURCE_ROOT; }; - D811F8ED13EC907200E3922B /* ExampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExampleViewController.h; path = sample/ExampleViewController.h; sourceTree = SOURCE_ROOT; }; - D811F8EE13EC907200E3922B /* ExampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ExampleViewController.m; path = sample/ExampleViewController.m; sourceTree = SOURCE_ROOT; }; - D811F8F013EC907200E3922B /* footer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = footer.png; sourceTree = ""; }; - D811F8F113EC907200E3922B /* footer@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "footer@2x.png"; sourceTree = ""; }; - D811F8F213EC907200E3922B /* imgOff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = imgOff.png; sourceTree = ""; }; - D811F8F313EC907200E3922B /* imgOn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = imgOn.png; sourceTree = ""; }; - D811F8F413EC907200E3922B /* intel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = intel.png; sourceTree = ""; }; - D811F8F513EC907200E3922B /* iPhone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iPhone.png; sourceTree = ""; }; - D811F8F613EC907200E3922B /* keyboard.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = keyboard.png; sourceTree = ""; }; - D811F8F713EC907200E3922B /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = ""; }; - D811F8F813EC907200E3922B /* logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo@2x.png"; sourceTree = ""; }; - D82A4AEF17BEE90E000986C8 /* QFloatTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QFloatTableViewCell.h; path = quickdialog/QFloatTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D82A4AF017BEE90E000986C8 /* QFloatTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QFloatTableViewCell.m; path = quickdialog/QFloatTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D82A4AF117BEE90E000986C8 /* QProgressElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QProgressElement.h; path = quickdialog/QProgressElement.h; sourceTree = SOURCE_ROOT; }; - D82A4AF217BEE90E000986C8 /* QProgressElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QProgressElement.m; path = quickdialog/QProgressElement.m; sourceTree = SOURCE_ROOT; }; - D82A4AFF17BEF033000986C8 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - D83BD545169661EA00188061 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - D86249F514BB5AB5002F0585 /* jsonadvancedsample.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = jsonadvancedsample.json; path = sample/Resources/jsonadvancedsample.json; sourceTree = SOURCE_ROOT; }; - D86249F614BB5AB5002F0585 /* jsondatasample.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = jsondatasample.json; path = sample/Resources/jsondatasample.json; sourceTree = SOURCE_ROOT; }; - D86249F714BB5AB5002F0585 /* loginform.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = loginform.json; path = sample/Resources/loginform.json; sourceTree = SOURCE_ROOT; }; - D86249F814BB5AB5002F0585 /* sample.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = sample.json; path = sample/Resources/sample.json; sourceTree = SOURCE_ROOT; }; - D871018414BB3D7A00156D9D /* QRootElement+JsonBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "QRootElement+JsonBuilder.h"; path = "quickdialog/QRootElement+JsonBuilder.h"; sourceTree = SOURCE_ROOT; }; - D871018514BB3D7A00156D9D /* QRootElement+JsonBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "QRootElement+JsonBuilder.m"; path = "quickdialog/QRootElement+JsonBuilder.m"; sourceTree = SOURCE_ROOT; }; - D87A4D6C169DABA900D4DD63 /* QElement+Appearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "QElement+Appearance.h"; path = "quickdialog/QElement+Appearance.h"; sourceTree = SOURCE_ROOT; }; - D87A4D6D169DABA900D4DD63 /* QElement+Appearance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "QElement+Appearance.m"; path = "quickdialog/QElement+Appearance.m"; sourceTree = SOURCE_ROOT; }; - D87A4D8E169DB59500D4DD63 /* QAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QAppearance.h; path = quickdialog/QAppearance.h; sourceTree = SOURCE_ROOT; }; - D87A4D8F169DB59500D4DD63 /* QAppearance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QAppearance.m; path = quickdialog/QAppearance.m; sourceTree = SOURCE_ROOT; }; - D87B4FC314F16197006DA833 /* DOAutocompleteTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DOAutocompleteTextField.h; path = quickdialog/DOAutocompleteTextField.h; sourceTree = SOURCE_ROOT; }; - D87B4FC414F16197006DA833 /* DOAutocompleteTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DOAutocompleteTextField.m; path = quickdialog/DOAutocompleteTextField.m; sourceTree = SOURCE_ROOT; }; - D87B4FC514F16197006DA833 /* QAutoEntryElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QAutoEntryElement.h; path = quickdialog/QAutoEntryElement.h; sourceTree = SOURCE_ROOT; }; - D87B4FC614F16197006DA833 /* QAutoEntryElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QAutoEntryElement.m; path = quickdialog/QAutoEntryElement.m; sourceTree = SOURCE_ROOT; }; - D87B4FC714F16197006DA833 /* QAutoEntryTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QAutoEntryTableViewCell.h; path = quickdialog/QAutoEntryTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D87B4FC814F16197006DA833 /* QAutoEntryTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QAutoEntryTableViewCell.m; path = quickdialog/QAutoEntryTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D8820B4F16A246860070AE22 /* QCountdownElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QCountdownElement.h; path = quickdialog/QCountdownElement.h; sourceTree = SOURCE_ROOT; }; - D8820B5016A246860070AE22 /* QCountdownElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QCountdownElement.m; path = quickdialog/QCountdownElement.m; sourceTree = SOURCE_ROOT; }; - D8820C7616A352990070AE22 /* QImageElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QImageElement.h; path = quickdialog/QImageElement.h; sourceTree = SOURCE_ROOT; }; - D8820C7716A352990070AE22 /* QImageElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QImageElement.m; path = quickdialog/QImageElement.m; sourceTree = SOURCE_ROOT; }; - D8820C7816A352990070AE22 /* QImageTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QImageTableViewCell.h; path = quickdialog/QImageTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D8820C7916A352990070AE22 /* QImageTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QImageTableViewCell.m; path = quickdialog/QImageTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D894F38815559D34000E3C0F /* NSMutableArray+IMSExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+IMSExtensions.h"; path = "quickdialog/NSMutableArray+IMSExtensions.h"; sourceTree = SOURCE_ROOT; }; - D894F38915559D34000E3C0F /* NSMutableArray+IMSExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+IMSExtensions.m"; path = "quickdialog/NSMutableArray+IMSExtensions.m"; sourceTree = SOURCE_ROOT; }; - D8A3DD86146045F000DE3528 /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Localizable.strings; path = sample/Localizable.strings; sourceTree = SOURCE_ROOT; }; - D8B39449151394E1008ECB34 /* QEmptyListElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QEmptyListElement.h; path = quickdialog/QEmptyListElement.h; sourceTree = SOURCE_ROOT; }; - D8B3944A151394E1008ECB34 /* QEmptyListElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QEmptyListElement.m; path = quickdialog/QEmptyListElement.m; sourceTree = SOURCE_ROOT; }; - D8B3944B151394E1008ECB34 /* QMultilineElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QMultilineElement.h; path = quickdialog/QMultilineElement.h; sourceTree = SOURCE_ROOT; }; - D8B3944C151394E1008ECB34 /* QMultilineElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QMultilineElement.m; path = quickdialog/QMultilineElement.m; sourceTree = SOURCE_ROOT; }; - D8B3944E151394E1008ECB34 /* QMultilineTextViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QMultilineTextViewController.h; path = quickdialog/QMultilineTextViewController.h; sourceTree = SOURCE_ROOT; }; - D8B3944F151394E1008ECB34 /* QMultilineTextViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QMultilineTextViewController.m; path = quickdialog/QMultilineTextViewController.m; sourceTree = SOURCE_ROOT; }; - D8B394671514E8B3008ECB34 /* QSegmentedElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QSegmentedElement.h; path = quickdialog/QSegmentedElement.h; sourceTree = SOURCE_ROOT; }; - D8B394681514E8B3008ECB34 /* QSegmentedElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QSegmentedElement.m; path = quickdialog/QSegmentedElement.m; sourceTree = SOURCE_ROOT; }; - D8D0294117BEDA4D00D9B6CE /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; - D8D0294317BEDA5200D9B6CE /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - D8E0748C165A7D08004E7035 /* QuickDialogController+Navigation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "QuickDialogController+Navigation.h"; path = "quickdialog/QuickDialogController+Navigation.h"; sourceTree = SOURCE_ROOT; }; - D8E0748D165A7D08004E7035 /* QuickDialogController+Navigation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Navigation.m"; path = "quickdialog/QuickDialogController+Navigation.m"; sourceTree = SOURCE_ROOT; }; - D8F180E513F0599A009B0C96 /* quickdialog.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = quickdialog.png; sourceTree = ""; }; - D8F180E613F0599A009B0C96 /* quickdialog@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "quickdialog@2x.png"; sourceTree = ""; }; - D8F180E813F0599A009B0C97 /* QDecimalElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = QDecimalElement.m; path = quickdialog/QDecimalElement.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0C99 /* QDecimalElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = QDecimalElement.h; path = quickdialog/QDecimalElement.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0C9A /* QDecimalTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = QDecimalTableViewCell.m; path = quickdialog/QDecimalTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0C9C /* QDecimalTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = QDecimalTableViewCell.h; path = quickdialog/QDecimalTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0C9E /* QuickDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialog.h; path = quickdialog/QuickDialog.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CA7 /* QBadgeLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QBadgeLabel.m; path = quickdialog/QBadgeLabel.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CA9 /* QBadgeLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QBadgeLabel.h; path = quickdialog/QBadgeLabel.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CAB /* JsonDataSampleController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = JsonDataSampleController.m; path = sample/JsonDataSampleController.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CAD /* JsonDataSampleController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JsonDataSampleController.h; path = sample/JsonDataSampleController.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CB2 /* QBindingEvaluator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QBindingEvaluator.m; path = quickdialog/QBindingEvaluator.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CB4 /* QBindingEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QBindingEvaluator.h; path = quickdialog/QBindingEvaluator.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CB6 /* QRootBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QRootBuilder.m; path = quickdialog/QRootBuilder.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CB8 /* QRootBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QRootBuilder.h; path = quickdialog/QRootBuilder.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CB9 /* QuickDialogEntryElementDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialogEntryElementDelegate.h; path = quickdialog/QuickDialogEntryElementDelegate.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CBB /* QLoadingElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QLoadingElement.m; path = quickdialog/QLoadingElement.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CBD /* QLoadingElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QLoadingElement.h; path = quickdialog/QLoadingElement.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CBF /* QDynamicDataSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QDynamicDataSection.m; path = quickdialog/QDynamicDataSection.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CC1 /* QDynamicDataSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QDynamicDataSection.h; path = quickdialog/QDynamicDataSection.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CC3 /* QTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QTableViewCell.m; path = quickdialog/QTableViewCell.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CC5 /* QTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QTableViewCell.h; path = quickdialog/QTableViewCell.h; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CC7 /* NSMutableArray+MoveObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+MoveObject.m"; path = "quickdialog/NSMutableArray+MoveObject.m"; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CC9 /* NSMutableArray+MoveObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+MoveObject.h"; path = "quickdialog/NSMutableArray+MoveObject.h"; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CCF /* jsonremote.json */ = {isa = PBXFileReference; lastKnownFileType = file.json; name = jsonremote.json; path = sample/Resources/jsonremote.json; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CD1 /* QuickDialogWebController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QuickDialogWebController.m; path = quickdialog/QuickDialogWebController.m; sourceTree = SOURCE_ROOT; }; - D8F180E813F0599A009B0CD3 /* QuickDialogWebController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QuickDialogWebController.h; path = quickdialog/QuickDialogWebController.h; sourceTree = SOURCE_ROOT; }; - F209CEE21536AB100043F61C /* PeriodPickerValueParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PeriodPickerValueParser.h; path = sample/PeriodPickerValueParser.h; sourceTree = SOURCE_ROOT; }; - F209CEE31536AB100043F61C /* PeriodPickerValueParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PeriodPickerValueParser.m; path = sample/PeriodPickerValueParser.m; sourceTree = SOURCE_ROOT; }; - F2304355156CDFDD006D0A56 /* QTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QTextField.h; path = quickdialog/QTextField.h; sourceTree = SOURCE_ROOT; }; - F2304356156CDFDD006D0A56 /* QTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QTextField.m; path = quickdialog/QTextField.m; sourceTree = SOURCE_ROOT; }; - F2E6149C151C9E4D00F36976 /* QSelectSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QSelectSection.h; path = quickdialog/QSelectSection.h; sourceTree = SOURCE_ROOT; }; - F2E6149D151C9E4D00F36976 /* QSelectSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QSelectSection.m; path = quickdialog/QSelectSection.m; sourceTree = SOURCE_ROOT; }; - F2E614A0151CA1A100F36976 /* QSelectItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = QSelectItemElement.h; path = quickdialog/QSelectItemElement.h; sourceTree = SOURCE_ROOT; }; - F2E614A1151CA1A100F36976 /* QSelectItemElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = QSelectItemElement.m; path = quickdialog/QSelectItemElement.m; sourceTree = SOURCE_ROOT; }; - F2F23A26152DD48B00EB6686 /* QuickDialogController+Helpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "QuickDialogController+Helpers.m"; path = "quickdialog/QuickDialogController+Helpers.m"; sourceTree = SOURCE_ROOT; }; - F2F23A26152DD48B00EB6688 /* QuickDialogController+Helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "QuickDialogController+Helpers.h"; path = "quickdialog/QuickDialogController+Helpers.h"; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 2C542390145ADEBD0026A152 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C542394145ADEBD0026A152 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D80B0E3013E052DF00FA85CA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D82A4B0017BEF033000986C8 /* MessageUI.framework in Frameworks */, - D8D0294417BEDA5200D9B6CE /* CoreLocation.framework in Frameworks */, - D8D0294217BEDA4D00D9B6CE /* MapKit.framework in Frameworks */, - 2CE450B3145AE43D00B77D0E /* libQuickDialog.a in Frameworks */, - D80B0E3813E052DF00FA85CA /* UIKit.framework in Frameworks */, - D80B0E3A13E052DF00FA85CA /* Foundation.framework in Frameworks */, - D80B0E3C13E052DF00FA85CA /* CoreGraphics.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 2CE450A8145ADF8000B77D0E /* libQuickDialog */ = { - isa = PBXGroup; - children = ( - 2CE450A9145ADFAC00B77D0E /* libQuickDialog-Prefix.pch */, - ); - name = libQuickDialog; - path = quickform; - sourceTree = ""; - }; - 5C50EF103443BF3C70224C57 /* extras */ = { - isa = PBXGroup; - children = ( - 5C50E4957330C22B16CE6938 /* QWebViewController.m */, - 5C50E5DF83EB5A046AD7FA16 /* QMapViewController.h */, - 5C50E02C8F4B4A90F96E33D6 /* QMapAnnotation.h */, - 5C50E71B9FC6B0B50346A5D0 /* QPickerTableViewCell.h */, - 5C50E2552AD0DC4C813AF542 /* QPickerTabDelimitedStringParser.h */, - 5C50EED1BB826D7F7B08055A /* QPickerElement.h */, - 5C50E56A3F1DC223669D7417 /* QMapAnnotation.m */, - 5C50EE213AF724E6D1B766D5 /* QPickerValueParser.h */, - 5C50EA8E14F439693332B438 /* QPickerTableViewCell.m */, - 5C50E498C230A92D1BD3C3EA /* QPickerTabDelimitedStringParser.m */, - 5C50E5B0F3DD0967B8186785 /* QMapElement.m */, - 5C50EB6C6D11D1CE7DA80298 /* QWebElement.h */, - 5C50E32E2F0A5EF03EB569E9 /* QPickerElement.m */, - 5C50E93B5273C6D9050767C6 /* QWebElement.m */, - 5C50EFD565900926223F50D4 /* QMapViewController.m */, - 5C50E53A66F53B07BEE29CE5 /* QWebViewController.h */, - 5C50E2A0B4D9AE7C4A1D2F71 /* QMapElement.h */, - 5C50E4D5FFEF3EC8D7D7C219 /* UIColor+ColorUtilities.m */, - 5C50EAFF4C085E41DE56306E /* QColorPickerElement.m */, - 5C50ECD6A4FF1F8136ECB485 /* UIColor+ColorUtilities.h */, - 5C50EF9F76D029609CD376E2 /* QColorPickerElement.h */, - 5C50E5ABA79D20529225F870 /* QMailElement.m */, - 5C50E503C0E833EBDE810039 /* QMailElement.h */, - ); - path = extras; - sourceTree = ""; - }; - D80B0E2813E052DF00FA85CA = { - isa = PBXGroup; - children = ( - 2CE450A8145ADF8000B77D0E /* libQuickDialog */, - D860356713E0534000CB1785 /* quickdialog */, - D80B0E3D13E052DF00FA85CA /* sample */, - D80B0E3613E052DF00FA85CA /* Frameworks */, - D80B0E3413E052DF00FA85CA /* Products */, - 5C50EF103443BF3C70224C57 /* extras */, - ); - sourceTree = ""; - }; - D80B0E3413E052DF00FA85CA /* Products */ = { - isa = PBXGroup; - children = ( - D80B0E3313E052DF00FA85CA /* QuickDialogExample.app */, - 2C542393145ADEBD0026A152 /* libQuickDialog.a */, - ); - name = Products; - sourceTree = ""; - }; - D80B0E3613E052DF00FA85CA /* Frameworks */ = { - isa = PBXGroup; - children = ( - D82A4AFF17BEF033000986C8 /* MessageUI.framework */, - D8D0294317BEDA5200D9B6CE /* CoreLocation.framework */, - D8D0294117BEDA4D00D9B6CE /* MapKit.framework */, - D80B0E3713E052DF00FA85CA /* UIKit.framework */, - D80B0E3913E052DF00FA85CA /* Foundation.framework */, - D80B0E3B13E052DF00FA85CA /* CoreGraphics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - D80B0E3D13E052DF00FA85CA /* sample */ = { - isa = PBXGroup; - children = ( - D86249F014BB5A64002F0585 /* json */, - D8F180E813F0599A009B0CAD /* JsonDataSampleController.h */, - D8F180E813F0599A009B0CAB /* JsonDataSampleController.m */, - D811F8DD13EC907200E3922B /* AboutController.h */, - D811F8DE13EC907200E3922B /* AboutController.m */, - D811F8DF13EC907200E3922B /* SampleDataBuilder.h */, - D811F8E013EC907200E3922B /* SampleDataBuilder.m */, - D811F8E113EC907200E3922B /* en.lproj */, - D811F8E413EC907200E3922B /* LoginController.h */, - D811F8E513EC907200E3922B /* LoginController.m */, - D811F8E613EC907200E3922B /* LoginInfo.h */, - D811F8E713EC907200E3922B /* LoginInfo.m */, - D811F8EB13EC907200E3922B /* ExampleAppDelegate.h */, - D811F8EC13EC907200E3922B /* ExampleAppDelegate.m */, - D811F8ED13EC907200E3922B /* ExampleViewController.h */, - D811F8EE13EC907200E3922B /* ExampleViewController.m */, - F209CEE21536AB100043F61C /* PeriodPickerValueParser.h */, - F209CEE31536AB100043F61C /* PeriodPickerValueParser.m */, - D811F8EF13EC907200E3922B /* Resources */, - D80B0E3E13E052DF00FA85CA /* Supporting Files */, - ); - name = sample; - path = quickformexample; - sourceTree = ""; - }; - D80B0E3E13E052DF00FA85CA /* Supporting Files */ = { - isa = PBXGroup; - children = ( - D8A3DD86146045F000DE3528 /* Localizable.strings */, - D811F8E813EC907200E3922B /* main.m */, - D811F8E913EC907200E3922B /* quickdialogexample-Info.plist */, - D811F8EA13EC907200E3922B /* quickdialogexample-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - D811F8E113EC907200E3922B /* en.lproj */ = { - isa = PBXGroup; - children = ( - D811F8E213EC907200E3922B /* InfoPlist.strings */, - ); - name = en.lproj; - path = sample/en.lproj; - sourceTree = SOURCE_ROOT; - }; - D811F8EF13EC907200E3922B /* Resources */ = { - isa = PBXGroup; - children = ( - D80F572317E1162A0052EBE3 /* icon.png */, - D80F572417E1162A0052EBE3 /* icon@2x.png */, - D80F572517E1162A0052EBE3 /* iconIpad.png */, - D83BD545169661EA00188061 /* Default-568h@2x.png */, - D8F180E513F0599A009B0C96 /* quickdialog.png */, - D8F180E613F0599A009B0C96 /* quickdialog@2x.png */, - D811F8F013EC907200E3922B /* footer.png */, - D811F8F113EC907200E3922B /* footer@2x.png */, - D811F8F213EC907200E3922B /* imgOff.png */, - D811F8F313EC907200E3922B /* imgOn.png */, - D811F8F413EC907200E3922B /* intel.png */, - D811F8F513EC907200E3922B /* iPhone.png */, - D811F8F613EC907200E3922B /* keyboard.png */, - D811F8F713EC907200E3922B /* logo.png */, - D811F8F813EC907200E3922B /* logo@2x.png */, - ); - name = Resources; - path = sample/Resources; - sourceTree = SOURCE_ROOT; - }; - D860356713E0534000CB1785 /* quickdialog */ = { - isa = PBXGroup; - children = ( - D87B4FC314F16197006DA833 /* DOAutocompleteTextField.h */, - D87B4FC414F16197006DA833 /* DOAutocompleteTextField.m */, - D894F38815559D34000E3C0F /* NSMutableArray+IMSExtensions.h */, - D894F38915559D34000E3C0F /* NSMutableArray+IMSExtensions.m */, - D8F180E813F0599A009B0CC9 /* NSMutableArray+MoveObject.h */, - D8F180E813F0599A009B0CC7 /* NSMutableArray+MoveObject.m */, - D87A4D8E169DB59500D4DD63 /* QAppearance.h */, - D87A4D8F169DB59500D4DD63 /* QAppearance.m */, - D87B4FC514F16197006DA833 /* QAutoEntryElement.h */, - D87B4FC614F16197006DA833 /* QAutoEntryElement.m */, - D87B4FC714F16197006DA833 /* QAutoEntryTableViewCell.h */, - D87B4FC814F16197006DA833 /* QAutoEntryTableViewCell.m */, - D811F88413EC905B00E3922B /* QBadgeElement.h */, - D811F88513EC905B00E3922B /* QBadgeElement.m */, - D8F180E813F0599A009B0CA9 /* QBadgeLabel.h */, - D8F180E813F0599A009B0CA7 /* QBadgeLabel.m */, - D811F88613EC905B00E3922B /* QBadgeTableCell.h */, - D811F88713EC905B00E3922B /* QBadgeTableCell.m */, - D8F180E813F0599A009B0CB4 /* QBindingEvaluator.h */, - D8F180E813F0599A009B0CB2 /* QBindingEvaluator.m */, - D811F88813EC905B00E3922B /* QBooleanElement.h */, - D811F88913EC905B00E3922B /* QBooleanElement.m */, - D811F88A13EC905B00E3922B /* QButtonElement.h */, - D811F88B13EC905B00E3922B /* QButtonElement.m */, - D80F571B17E115580052EBE3 /* QClassicAppearance.h */, - D80F571C17E115580052EBE3 /* QClassicAppearance.m */, - D8820B4F16A246860070AE22 /* QCountdownElement.h */, - D8820B5016A246860070AE22 /* QCountdownElement.m */, - D811F88C13EC905B00E3922B /* QDateEntryTableViewCell.h */, - D811F88D13EC905B00E3922B /* QDateEntryTableViewCell.m */, - 5C50E0ECCB367417713A7F87 /* QDateInlineTableViewCell.h */, - 5C50EBEE72341BBE7219C06E /* QDateInlineTableViewCell.m */, - D811F88E13EC905B00E3922B /* QDateTimeElement.h */, - D811F88F13EC905B00E3922B /* QDateTimeElement.m */, - D811F89013EC905B00E3922B /* QDateTimeInlineElement.h */, - D811F89113EC905B00E3922B /* QDateTimeInlineElement.m */, - D8F180E813F0599A009B0C99 /* QDecimalElement.h */, - D8F180E813F0599A009B0C97 /* QDecimalElement.m */, - D8F180E813F0599A009B0C9C /* QDecimalTableViewCell.h */, - D8F180E813F0599A009B0C9A /* QDecimalTableViewCell.m */, - D8F180E813F0599A009B0CC1 /* QDynamicDataSection.h */, - D8F180E813F0599A009B0CBF /* QDynamicDataSection.m */, - D87A4D6C169DABA900D4DD63 /* QElement+Appearance.h */, - D87A4D6D169DABA900D4DD63 /* QElement+Appearance.m */, - D811F89213EC905B00E3922B /* QElement.h */, - D811F89313EC905B00E3922B /* QElement.m */, - D8B39449151394E1008ECB34 /* QEmptyListElement.h */, - D8B3944A151394E1008ECB34 /* QEmptyListElement.m */, - D811F89413EC905B00E3922B /* QEntryElement.h */, - D811F89513EC905B00E3922B /* QEntryElement.m */, - D811F89613EC905B00E3922B /* QEntryTableViewCell.h */, - D811F89713EC905B00E3922B /* QEntryTableViewCell.m */, - D80F571D17E115580052EBE3 /* QFlatAppearance.h */, - D80F571E17E115580052EBE3 /* QFlatAppearance.m */, - D811F89813EC905B00E3922B /* QFloatElement.h */, - D811F89913EC905B00E3922B /* QFloatElement.m */, - D82A4AEF17BEE90E000986C8 /* QFloatTableViewCell.h */, - D82A4AF017BEE90E000986C8 /* QFloatTableViewCell.m */, - D8820C7616A352990070AE22 /* QImageElement.h */, - D8820C7716A352990070AE22 /* QImageElement.m */, - D8820C7816A352990070AE22 /* QImageTableViewCell.h */, - D8820C7916A352990070AE22 /* QImageTableViewCell.m */, - D811F89A13EC905B00E3922B /* QLabelElement.h */, - D811F89B13EC905B00E3922B /* QLabelElement.m */, - D8F180E813F0599A009B0CBD /* QLoadingElement.h */, - D8F180E813F0599A009B0CBB /* QLoadingElement.m */, - D8B3944B151394E1008ECB34 /* QMultilineElement.h */, - D8B3944C151394E1008ECB34 /* QMultilineElement.m */, - D8B3944E151394E1008ECB34 /* QMultilineTextViewController.h */, - D8B3944F151394E1008ECB34 /* QMultilineTextViewController.m */, - D82A4AF117BEE90E000986C8 /* QProgressElement.h */, - D82A4AF217BEE90E000986C8 /* QProgressElement.m */, - D811F8AE13EC905B00E3922B /* QRadioElement.h */, - D811F8AF13EC905B00E3922B /* QRadioElement.m */, - D811F8B013EC905B00E3922B /* QRadioItemElement.h */, - D811F8B113EC905B00E3922B /* QRadioItemElement.m */, - D811F8B213EC905B00E3922B /* QRadioSection.h */, - D811F8B313EC905B00E3922B /* QRadioSection.m */, - D8F180E813F0599A009B0CB8 /* QRootBuilder.h */, - D8F180E813F0599A009B0CB6 /* QRootBuilder.m */, - D871018414BB3D7A00156D9D /* QRootElement+JsonBuilder.h */, - D871018514BB3D7A00156D9D /* QRootElement+JsonBuilder.m */, - D811F8B413EC905B00E3922B /* QRootElement.h */, - D811F8B513EC905B00E3922B /* QRootElement.m */, - D811F8B613EC905B00E3922B /* QSection.h */, - D811F8B713EC905B00E3922B /* QSection.m */, - D8B394671514E8B3008ECB34 /* QSegmentedElement.h */, - D8B394681514E8B3008ECB34 /* QSegmentedElement.m */, - F2E614A0151CA1A100F36976 /* QSelectItemElement.h */, - F2E614A1151CA1A100F36976 /* QSelectItemElement.m */, - F2E6149C151C9E4D00F36976 /* QSelectSection.h */, - F2E6149D151C9E4D00F36976 /* QSelectSection.m */, - D811F8B813EC905B00E3922B /* QSortingSection.h */, - D811F8B913EC905B00E3922B /* QSortingSection.m */, - D8F180E813F0599A009B0CC5 /* QTableViewCell.h */, - D8F180E813F0599A009B0CC3 /* QTableViewCell.m */, - D811F8BA13EC905B00E3922B /* QTextElement.h */, - D811F8BB13EC905B00E3922B /* QTextElement.m */, - F2304355156CDFDD006D0A56 /* QTextField.h */, - F2304356156CDFDD006D0A56 /* QTextField.m */, - D8F180E813F0599A009B0C9E /* QuickDialog.h */, - 5C50E22D2B906D69252BE7B4 /* QuickDialogController+Animations.h */, - 5C50EBF53D28B761CBA809FF /* QuickDialogController+Animations.m */, - F2F23A26152DD48B00EB6688 /* QuickDialogController+Helpers.h */, - D8B39449151394E1008ECB34 /* QEmptyListElement.h */, - F2F23A26152DD48B00EB6686 /* QuickDialogController+Helpers.m */, - D8B3944A151394E1008ECB34 /* QEmptyListElement.m */, - D811F8A413EC905B00E3922B /* QuickDialogController+Loading.h */, - D811F8A513EC905B00E3922B /* QuickDialogController+Loading.m */, - D8E0748C165A7D08004E7035 /* QuickDialogController+Navigation.h */, - D8E0748D165A7D08004E7035 /* QuickDialogController+Navigation.m */, - D811F8A213EC905B00E3922B /* QuickDialogController.h */, - D811F8A313EC905B00E3922B /* QuickDialogController.m */, - D811F8A613EC905B00E3922B /* QuickDialogDataSource.h */, - D811F8A713EC905B00E3922B /* QuickDialogDataSource.m */, - 5C50E2AA6DF16A845C049EAE /* QuickDialogDelegate.h */, - D8F180E813F0599A009B0CB9 /* QuickDialogEntryElementDelegate.h */, - D811F8A913EC905B00E3922B /* QuickDialogTableDelegate.h */, - D811F8AA13EC905B00E3922B /* QuickDialogTableDelegate.m */, - D811F8AB13EC905B00E3922B /* QuickDialogTableView.h */, - D811F8AC13EC905B00E3922B /* QuickDialogTableView.m */, - D8F180E813F0599A009B0CD3 /* QuickDialogWebController.h */, - D8B3944B151394E1008ECB34 /* QMultilineElement.h */, - D8F180E813F0599A009B0CD1 /* QuickDialogWebController.m */, - D8B3944C151394E1008ECB34 /* QMultilineElement.m */, - D811F8AD13EC905B00E3922B /* quickform-Prefix.pch */, - D8B3944E151394E1008ECB34 /* QMultilineTextViewController.h */, - D8B3944F151394E1008ECB34 /* QMultilineTextViewController.m */, - D8B394671514E8B3008ECB34 /* QSegmentedElement.h */, - D8B394681514E8B3008ECB34 /* QSegmentedElement.m */, - F2F23A26152DD48B00EB6688 /* QuickDialogController+Helpers.h */, - F2F23A26152DD48B00EB6686 /* QuickDialogController+Helpers.m */, - D8F180E813F0599A009B0CD3 /* QuickDialogWebController.h */, - D8F180E813F0599A009B0CD1 /* QuickDialogWebController.m */, - 194C3FC014EDF0510036C9E7 /* DOAutocompleteTextField.h */, - 194C3FC114EDF0510036C9E7 /* DOAutocompleteTextField.m */, - ); - name = quickdialog; - path = quickform; - sourceTree = ""; - }; - D86249F014BB5A64002F0585 /* json */ = { - isa = PBXGroup; - children = ( - D8F180E813F0599A009B0CCF /* jsonremote.json */, - D86249F514BB5AB5002F0585 /* jsonadvancedsample.json */, - D86249F614BB5AB5002F0585 /* jsondatasample.json */, - D86249F714BB5AB5002F0585 /* loginform.json */, - D86249F814BB5AB5002F0585 /* sample.json */, - 5C50E404FC15CFA443ABBB5C /* navigation.json */, - 5C50E2CE6D8D6B3DD766CCCC /* themes.json */, - ); - name = json; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 2C542391145ADEBD0026A152 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C54239F145ADF2B0026A152 /* QuickDialog.h in Headers */, - D8F180E813F0599A009B0CCA /* NSMutableArray+MoveObject.h in Headers */, - D81F2ED714BBAFCE0066C372 /* QRootBuilder.h in Headers */, - D80F572117E115580052EBE3 /* QFlatAppearance.h in Headers */, - D81F2ED814BBAFCE0066C372 /* QBindingEvaluator.h in Headers */, - D81F2EE714BBAFCE0066C372 /* QLabelElement.h in Headers */, - D81F2ED914BBAFCE0066C372 /* QBadgeLabel.h in Headers */, - D81F2EDA14BBAFCE0066C372 /* QDecimalTableViewCell.h in Headers */, - D81F2EDB14BBAFCE0066C372 /* QDecimalElement.h in Headers */, - D8820C7F16A3544C0070AE22 /* QImageElement.h in Headers */, - D8820C8016A3544F0070AE22 /* QImageTableViewCell.h in Headers */, - D81F2EDC14BBAFCE0066C372 /* QBadgeElement.h in Headers */, - D81F2EDD14BBAFCE0066C372 /* QBadgeTableCell.h in Headers */, - D81F2EDE14BBAFCE0066C372 /* QBooleanElement.h in Headers */, - D81F2EDF14BBAFCE0066C372 /* QButtonElement.h in Headers */, - D81F2EE014BBAFCE0066C372 /* QDateEntryTableViewCell.h in Headers */, - D81F2EE114BBAFCE0066C372 /* QDateTimeElement.h in Headers */, - D81F2EE214BBAFCE0066C372 /* QDateTimeInlineElement.h in Headers */, - D81F2EE314BBAFCE0066C372 /* QElement.h in Headers */, - D81F2EE414BBAFCE0066C372 /* QEntryElement.h in Headers */, - D81F2EE514BBAFCE0066C372 /* QEntryTableViewCell.h in Headers */, - D81F2EE614BBAFCE0066C372 /* QFloatElement.h in Headers */, - D81F2EEB14BBAFCE0066C372 /* QuickDialogController.h in Headers */, - D81F2EEC14BBAFCE0066C372 /* QuickDialogController+Loading.h in Headers */, - D81F2EED14BBAFCE0066C372 /* QuickDialogDataSource.h in Headers */, - D81F2EEF14BBAFCE0066C372 /* QuickDialogTableDelegate.h in Headers */, - D81F2EF014BBAFCE0066C372 /* QuickDialogTableView.h in Headers */, - D81F2EF114BBAFCE0066C372 /* QRadioElement.h in Headers */, - D81F2EF214BBAFCE0066C372 /* QRadioItemElement.h in Headers */, - D81F2EF314BBAFCE0066C372 /* QRadioSection.h in Headers */, - D81F2EF414BBAFCE0066C372 /* QRootElement.h in Headers */, - D81F2EF514BBAFCE0066C372 /* QRootElement+JsonBuilder.h in Headers */, - D81F2EF614BBAFCE0066C372 /* QSection.h in Headers */, - D81F2EF714BBAFCE0066C372 /* QSortingSection.h in Headers */, - D82A4AF317BEE90E000986C8 /* QFloatTableViewCell.h in Headers */, - D81F2EF814BBAFCE0066C372 /* QTextElement.h in Headers */, - D8F180E813F0599A009B0CBA /* QuickDialogEntryElementDelegate.h in Headers */, - D8F180E813F0599A009B0CBE /* QLoadingElement.h in Headers */, - D8F180E813F0599A009B0CC2 /* QDynamicDataSection.h in Headers */, - D8F180E813F0599A009B0CC6 /* QTableViewCell.h in Headers */, - 194C3FC214EDF0510036C9E7 /* DOAutocompleteTextField.h in Headers */, - D87B4FCB14F16197006DA833 /* QAutoEntryElement.h in Headers */, - D87B4FCD14F16197006DA833 /* QAutoEntryTableViewCell.h in Headers */, - D8B39450151394E1008ECB34 /* QEmptyListElement.h in Headers */, - D8B39452151394E1008ECB34 /* QMultilineElement.h in Headers */, - D8B39455151394E1008ECB34 /* QMultilineTextViewController.h in Headers */, - D8B394691514E8B3008ECB34 /* QSegmentedElement.h in Headers */, - D8F180E813F0599A009B0CD4 /* QuickDialogWebController.h in Headers */, - F2E6149E151C9E4D00F36976 /* QSelectSection.h in Headers */, - F2E614A2151CA1A100F36976 /* QSelectItemElement.h in Headers */, - F2F23A26152DD48B00EB6689 /* QuickDialogController+Helpers.h in Headers */, - D894F38A15559D34000E3C0F /* NSMutableArray+IMSExtensions.h in Headers */, - F2304357156CDFDD006D0A56 /* QTextField.h in Headers */, - D8E0748E165A7D08004E7035 /* QuickDialogController+Navigation.h in Headers */, - D80F571F17E115580052EBE3 /* QClassicAppearance.h in Headers */, - 5C50E6D6FE14BF78231F9671 /* QuickDialogController+Animations.h in Headers */, - D82A4AF517BEE90E000986C8 /* QProgressElement.h in Headers */, - D87A4D6E169DABA900D4DD63 /* QElement+Appearance.h in Headers */, - 5C50E1E06A0557312EB9B187 /* QAppearance.h in Headers */, - D87A4D90169DB59500D4DD63 /* QAppearance.h in Headers */, - D8820B5116A246860070AE22 /* QCountdownElement.h in Headers */, - 5C50E814B8FABFE9A6509398 /* QuickDialogDelegate.h in Headers */, - 5C50E4FA7CB1F9ECA0B950F3 /* QDateInlineTableViewCell.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 2C542392145ADEBD0026A152 /* QuickDialog */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2C54239D145ADEBE0026A152 /* Build configuration list for PBXNativeTarget "QuickDialog" */; - buildPhases = ( - 2C54238F145ADEBD0026A152 /* Sources */, - 2C542390145ADEBD0026A152 /* Frameworks */, - 2C542391145ADEBD0026A152 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = QuickDialog; - productName = libQuickDialog; - productReference = 2C542393145ADEBD0026A152 /* libQuickDialog.a */; - productType = "com.apple.product-type.library.static"; - }; - D80B0E3213E052DF00FA85CA /* QuickDialogExample */ = { - isa = PBXNativeTarget; - buildConfigurationList = D80B0E4B13E052DF00FA85CA /* Build configuration list for PBXNativeTarget "QuickDialogExample" */; - buildPhases = ( - D80B0E2F13E052DF00FA85CA /* Sources */, - D80B0E3013E052DF00FA85CA /* Frameworks */, - D80B0E3113E052DF00FA85CA /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 2CE450B2145AE43700B77D0E /* PBXTargetDependency */, - ); - name = QuickDialogExample; - productName = quickformexample; - productReference = D80B0E3313E052DF00FA85CA /* QuickDialogExample.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D80B0E2A13E052DF00FA85CA /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - }; - buildConfigurationList = D80B0E2D13E052DF00FA85CA /* Build configuration list for PBXProject "QuickDialog" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = D80B0E2813E052DF00FA85CA; - productRefGroup = D80B0E3413E052DF00FA85CA /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D80B0E3213E052DF00FA85CA /* QuickDialogExample */, - 2C542392145ADEBD0026A152 /* QuickDialog */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - D80B0E3113E052DF00FA85CA /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D811F90413EC907200E3922B /* footer.png in Resources */, - D811F90513EC907200E3922B /* footer@2x.png in Resources */, - D811F90613EC907200E3922B /* imgOff.png in Resources */, - D811F90713EC907200E3922B /* imgOn.png in Resources */, - D811F90813EC907200E3922B /* intel.png in Resources */, - D811F90913EC907200E3922B /* iPhone.png in Resources */, - D80F572817E1162B0052EBE3 /* iconIpad.png in Resources */, - D811F90A13EC907200E3922B /* keyboard.png in Resources */, - D811F90B13EC907200E3922B /* logo.png in Resources */, - D80F572617E1162B0052EBE3 /* icon.png in Resources */, - D811F90C13EC907200E3922B /* logo@2x.png in Resources */, - D8F180E713F0599A009B0C96 /* quickdialog.png in Resources */, - D8F180E813F0599A009B0C96 /* quickdialog@2x.png in Resources */, - D8A3DD87146045F000DE3528 /* Localizable.strings in Resources */, - D86249F914BB5AB5002F0585 /* jsonadvancedsample.json in Resources */, - D86249FA14BB5AB5002F0585 /* jsondatasample.json in Resources */, - D86249FB14BB5AB5002F0585 /* loginform.json in Resources */, - D86249FC14BB5AB5002F0585 /* sample.json in Resources */, - D8F180E813F0599A009B0CD0 /* jsonremote.json in Resources */, - 5C50E665E1BD1D5B1B8B944E /* navigation.json in Resources */, - D83BD546169661EA00188061 /* Default-568h@2x.png in Resources */, - 5C50E1652D781293C5963717 /* themes.json in Resources */, - D80F572717E1162B0052EBE3 /* icon@2x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 2C54238F145ADEBD0026A152 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C5423A1145ADF2B0026A152 /* QDecimalTableViewCell.m in Sources */, - 2C5423A3145ADF2B0026A152 /* QDecimalElement.m in Sources */, - 2C5423A5145ADF2B0026A152 /* QBadgeElement.m in Sources */, - 2C5423A7145ADF2B0026A152 /* QBadgeTableCell.m in Sources */, - 2C5423A9145ADF2B0026A152 /* QBooleanElement.m in Sources */, - 2C5423AB145ADF2B0026A152 /* QButtonElement.m in Sources */, - D80F572017E115580052EBE3 /* QClassicAppearance.m in Sources */, - 2C5423AD145ADF2B0026A152 /* QDateEntryTableViewCell.m in Sources */, - 2C5423AF145ADF2B0026A152 /* QDateTimeElement.m in Sources */, - 2C5423B1145ADF2B0026A152 /* QDateTimeInlineElement.m in Sources */, - 2C5423BB145ADF2B0026A152 /* QLabelElement.m in Sources */, - 2C5423B3145ADF2B0026A152 /* QElement.m in Sources */, - D87A4D6F169DABA900D4DD63 /* QElement+Appearance.m in Sources */, - 2C5423B5145ADF2B0026A152 /* QEntryElement.m in Sources */, - 2C5423B7145ADF2B0026A152 /* QEntryTableViewCell.m in Sources */, - 2C5423B9145ADF2B0026A152 /* QFloatElement.m in Sources */, - 2C5423C3145ADF2B0026A152 /* QuickDialogController.m in Sources */, - 2C5423C5145ADF2B0026A152 /* QuickDialogController+Loading.m in Sources */, - 2C5423C7145ADF2B0026A152 /* QuickDialogDataSource.m in Sources */, - 2C5423CA145ADF2B0026A152 /* QuickDialogTableDelegate.m in Sources */, - 2C5423CC145ADF2B0026A152 /* QuickDialogTableView.m in Sources */, - 2C5423CF145ADF2B0026A152 /* QRadioElement.m in Sources */, - D80F572217E115580052EBE3 /* QFlatAppearance.m in Sources */, - D82A4AF617BEE90E000986C8 /* QProgressElement.m in Sources */, - 2C5423D1145ADF2B0026A152 /* QRadioItemElement.m in Sources */, - 2C5423D3145ADF2B0026A152 /* QRadioSection.m in Sources */, - 2C5423D5145ADF2B0026A152 /* QRootElement.m in Sources */, - D82A4AF417BEE90E000986C8 /* QFloatTableViewCell.m in Sources */, - 2C5423D7145ADF2B0026A152 /* QSection.m in Sources */, - 2C5423D9145ADF2B0026A152 /* QSortingSection.m in Sources */, - 2C5423DB145ADF2B0026A152 /* QTextElement.m in Sources */, - D8F180E813F0599A009B0CA8 /* QBadgeLabel.m in Sources */, - D8F180E813F0599A009B0CB3 /* QBindingEvaluator.m in Sources */, - D871018714BB3D7A00156D9D /* QRootElement+JsonBuilder.m in Sources */, - D8F180E813F0599A009B0CB7 /* QRootBuilder.m in Sources */, - D8F180E813F0599A009B0CBC /* QLoadingElement.m in Sources */, - D8F180E813F0599A009B0CC0 /* QDynamicDataSection.m in Sources */, - D8F180E813F0599A009B0CC4 /* QTableViewCell.m in Sources */, - D87A4D91169DB59500D4DD63 /* QAppearance.m in Sources */, - 194C3FC314EDF0510036C9E7 /* DOAutocompleteTextField.m in Sources */, - D87B4FCC14F16197006DA833 /* QAutoEntryElement.m in Sources */, - D87B4FCE14F16197006DA833 /* QAutoEntryTableViewCell.m in Sources */, - D8F180E813F0599A009B0CC8 /* NSMutableArray+MoveObject.m in Sources */, - D8B39451151394E1008ECB34 /* QEmptyListElement.m in Sources */, - D8B39453151394E1008ECB34 /* QMultilineElement.m in Sources */, - D8B39456151394E1008ECB34 /* QMultilineTextViewController.m in Sources */, - D8B3946A1514E8B3008ECB34 /* QSegmentedElement.m in Sources */, - D8F180E813F0599A009B0CD2 /* QuickDialogWebController.m in Sources */, - F2E6149F151C9E4D00F36976 /* QSelectSection.m in Sources */, - F2E614A3151CA1A100F36976 /* QSelectItemElement.m in Sources */, - F2F23A26152DD48B00EB6687 /* QuickDialogController+Helpers.m in Sources */, - D894F38B15559D34000E3C0F /* NSMutableArray+IMSExtensions.m in Sources */, - F2304358156CDFDD006D0A56 /* QTextField.m in Sources */, - D8E0748F165A7D08004E7035 /* QuickDialogController+Navigation.m in Sources */, - 5C50E215ECB7C7D4B503AA4C /* QuickDialogController+Animations.m in Sources */, - D8820B5216A246860070AE22 /* QCountdownElement.m in Sources */, - D8820C7D16A3543D0070AE22 /* QImageElement.m in Sources */, - D8820C7E16A3543F0070AE22 /* QImageTableViewCell.m in Sources */, - 5C50E343ABC2679C20372B2D /* QDateInlineTableViewCell.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D80B0E2F13E052DF00FA85CA /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D811F8FB13EC907200E3922B /* AboutController.m in Sources */, - D811F8FC13EC907200E3922B /* SampleDataBuilder.m in Sources */, - D811F8FE13EC907200E3922B /* LoginController.m in Sources */, - D811F8FF13EC907200E3922B /* LoginInfo.m in Sources */, - D811F90013EC907200E3922B /* main.m in Sources */, - D811F90213EC907200E3922B /* ExampleAppDelegate.m in Sources */, - D811F90313EC907200E3922B /* ExampleViewController.m in Sources */, - D8F180E813F0599A009B0CAC /* JsonDataSampleController.m in Sources */, - F209CEE41536AB100043F61C /* PeriodPickerValueParser.m in Sources */, - 5C50EB6A5469607BDA08A4F0 /* QWebViewController.m in Sources */, - 5C50E18E8FEC2BCC8B8C12EA /* QMapAnnotation.m in Sources */, - 5C50E7FD1C54757459D8F88B /* QPickerTableViewCell.m in Sources */, - 5C50E2B67E1D64DAE87FD81D /* QPickerTabDelimitedStringParser.m in Sources */, - 5C50EF790D3A46FEDCDF0FA0 /* QMapElement.m in Sources */, - 5C50E81524FD5F3E540B4D83 /* QPickerElement.m in Sources */, - 5C50EFD5861E1FE78AD17F06 /* QWebElement.m in Sources */, - 5C50E65C85040A1F79EAD648 /* QMapViewController.m in Sources */, - 5C50EFADB34DF61735763BCF /* UIColor+ColorUtilities.m in Sources */, - 5C50EAFF93AE7374E94BEBAE /* QColorPickerElement.m in Sources */, - 5C50E98463F3848733205310 /* QMailElement.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 2CE450B2145AE43700B77D0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 2C542392145ADEBD0026A152 /* QuickDialog */; - targetProxy = 2CE450B1145AE43700B77D0E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - D811F8E213EC907200E3922B /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - D811F8E313EC907200E3922B /* InfoPlist.strings */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 2C54239B145ADEBE0026A152 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/libQuickDialog.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "libQuickDialog/libQuickDialog-Prefix.pch"; - GCC_THUMB_SUPPORT = NO; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = /include/QuickDialog; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 2C54239C145ADEBE0026A152 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/libQuickDialog.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "libQuickDialog/libQuickDialog-Prefix.pch"; - GCC_THUMB_SUPPORT = NO; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = /include/QuickDialog; - SKIP_INSTALL = YES; - }; - name = Release; - }; - D80B0E4913E052DF00FA85CA /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - 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_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_MISSING_NEWLINE = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = 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 = 4.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - D80B0E4A13E052DF00FA85CA /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_MISSING_NEWLINE = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = 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 = 4.0; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - D80B0E4C13E052DF00FA85CA /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "sample/quickdialogexample-Prefix.pch"; - HEADER_SEARCH_PATHS = "$(SOURCE_ROOT)/Build"; - INFOPLIST_FILE = "sample/quickdialogexample-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - D80B0E4D13E052DF00FA85CA /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "sample/quickdialogexample-Prefix.pch"; - HEADER_SEARCH_PATHS = "$(SOURCE_ROOT)/Build"; - INFOPLIST_FILE = "sample/quickdialogexample-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 2C54239D145ADEBE0026A152 /* Build configuration list for PBXNativeTarget "QuickDialog" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2C54239B145ADEBE0026A152 /* Debug */, - 2C54239C145ADEBE0026A152 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D80B0E2D13E052DF00FA85CA /* Build configuration list for PBXProject "QuickDialog" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D80B0E4913E052DF00FA85CA /* Debug */, - D80B0E4A13E052DF00FA85CA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D80B0E4B13E052DF00FA85CA /* Build configuration list for PBXNativeTarget "QuickDialogExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D80B0E4C13E052DF00FA85CA /* Debug */, - D80B0E4D13E052DF00FA85CA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = D80B0E2A13E052DF00FA85CA /* Project object */; -} diff --git a/QuickDialog.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/QuickDialog.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 6f7be29c..00000000 --- a/QuickDialog.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/QuickDialog.xcodeproj/themes.json b/QuickDialog.xcodeproj/themes.json deleted file mode 100644 index 4cb7e46d..00000000 --- a/QuickDialog.xcodeproj/themes.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "grouped": true, - "title": "Themes", - "controllerName":"ExampleViewController", - "sections": [ - { "elements":[ - { "type":"QButtonElement", "key":"button", "title":"Blue Theme", "controllerAction":"setTheme:", "object":"blue"} - ] - }, - { "elements":[ - { "type":"QButtonElement", "key":"button", "title":"Red Theme", "controllerAction":"setTheme:", "object":"red"} - ] - } - ] -} diff --git a/README.markdown b/README.markdown deleted file mode 100644 index 19dc66e7..00000000 --- a/README.markdown +++ /dev/null @@ -1,30 +0,0 @@ -# QuickDialog - -**Quick and simple dialogs for iOS developers.** - -## For more information and documentation, please go to [the project official website](http://escoz.com/open-source/quickdialog). - - - - - - - -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! - -![Sample](https://github.com/escoz/QuickDialog/raw/master/other/quickdialog2.png "Sample") -![Styling QuickDialog](https://github.com/escoz/QuickDialog/raw/master/other/quickdialog3.png "Styling cells with QuickDialog") - - -Download the project and run the demo app, I'm sure you'll like how simple it is to create powerful dialogs! - -Have a question? ask it on our new Google Groups: https://groups.google.com/forum/?fromgroups&hl=en#!forum/quickdialog - - ----------- - -*QuickDialog is inspired by the brilliant MonoTouch.Dialog library created by Miguel de Icaza, which can be found at https://github.com/migueldeicaza/MonoTouch.Dialog.* - ----------- diff --git a/README.md b/README.md new file mode 100644 index 00000000..5c25848e --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# QuickDialog + +**Quick and simple dialogs for iOS developers.** + +## For more information and documentation, please go to [the project official website](http://escoz.com/open-source/quickdialog). + +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! + +![Sample](https://github.com/escoz/QuickDialog/raw/master/other/quickdialog.png "Sample") + +# Instalation + +The best way of using the library is to use CocoaPods. Simply add the dependency and install the pod, like this: + +``` + pod "QuickDialog" +``` + +QuickDialog is broken into three different pods by default: + +* Core: basic data structure and functionality to display sections and elements +* Forms: user input controls, such as numbers, selectors, etc. +* Extras: useful controls that have dependencies on external frameworks, like MapKit, etc. + +By default, the QuickDialog pod includes Core+Forms, but not Extras. If you would like to have more control, you can define which pods you would like to use: + +``` + pod "QuickDialog/Core" + pod "QuickDialog/Forms" + pod "QuickDialog/Extras" +``` + +The project also comes with a sample app that covers the majority of the elements, and is a great example of how things work. + +Download the project and run the demo app, I'm sure you'll like how simple it is to create powerful dialogs! + diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..0219b4f1 --- /dev/null +++ b/Rakefile @@ -0,0 +1,156 @@ +desc "Runs the specs [EMPTY]" +task :spec do + # Provide your own implementation +end + +task :version do + git_remotes = `git remote`.strip.split("\n") + + if git_remotes.count > 0 + puts "-- fetching version number from github" + sh 'git fetch' + + remote_version = remote_spec_version + end + + if remote_version.nil? + puts "There is no current released version. You're about to release a new Pod." + version = "0.0.1" + else + puts "The current released version of your pod is " + + remote_spec_version.to_s() + version = suggested_version_number + end + + puts "Enter the version you want to release (" + version + ") " + new_version_number = $stdin.gets.strip + if new_version_number == "" + new_version_number = version + end + + replace_version_number(new_version_number) +end + +desc "Release a new version of the Pod (append repo=name to push to a private spec repo)" +task :release do + # Allow override of spec repo name using `repo=private` after task name + repo = ENV["repo"] || "master" + + puts "* Running version" + sh "rake version" + + unless ENV['SKIP_CHECKS'] + if `git symbolic-ref HEAD 2>/dev/null`.strip.split('/').last != 'master' + $stderr.puts "[!] You need to be on the `master' branch in order to be able to do a release." + exit 1 + end + + if `git tag`.strip.split("\n").include?(spec_version) + $stderr.puts "[!] A tag for version `#{spec_version}' already exists. Change the version in the podspec" + exit 1 + end + + puts "You are about to release `#{spec_version}`, is that correct? [y/n]" + exit if $stdin.gets.strip.downcase != 'y' + end + + puts "* Running specs" + sh "rake spec" + + puts "* Linting the podspec" + sh "pod lib lint" + + # Then release + sh "git commit #{podspec_path} CHANGELOG.md -m 'Release #{spec_version}' --allow-empty" + sh "git tag -a #{spec_version} -m 'Release #{spec_version}'" + sh "git push origin master" + sh "git push origin --tags" + sh "pod push #{repo} #{podspec_path}" +end + +# @return [Pod::Version] The version as reported by the Podspec. +# +def spec_version + require 'cocoapods' + spec = Pod::Specification.from_file(podspec_path) + spec.version +end + +# @return [Pod::Version] The version as reported by the Podspec from remote. +# +def remote_spec_version + require 'cocoapods-core' + + if spec_file_exist_on_remote? + remote_spec = eval(`git show origin/master:#{podspec_path}`) + remote_spec.version + else + nil + end +end + +# @return [Bool] If the remote repository has a copy of the podpesc file or not. +# +def spec_file_exist_on_remote? + test_condition = `if git rev-parse --verify --quiet origin/master:#{podspec_path} >/dev/null; + then + echo 'true' + else + echo 'false' + fi` + + 'true' == test_condition.strip +end + +# @return [String] The relative path of the Podspec. +# +def podspec_path + podspecs = Dir.glob('*.podspec') + if podspecs.count == 1 + podspecs.first + else + raise "Could not select a podspec" + end +end + +# @return [String] The suggested version number based on the local and remote +# version numbers. +# +def suggested_version_number + if spec_version != remote_spec_version + spec_version.to_s() + else + next_version(spec_version).to_s() + end +end + +# @param [Pod::Version] version +# the version for which you need the next version +# +# @note It is computed by bumping the last component of +# the version string by 1. +# +# @return [Pod::Version] The version that comes next after +# the version supplied. +# +def next_version(version) + version_components = version.to_s().split("."); + last = (version_components.last.to_i() + 1).to_s + version_components[-1] = last + Pod::Version.new(version_components.join(".")) +end + +# @param [String] new_version_number +# the new version number +# +# @note This methods replaces the version number in the podspec file +# with a new version number. +# +# @return void +# +def replace_version_number(new_version_number) + text = File.read(podspec_path) + text.gsub!(/(s.version( )*= ")#{spec_version}(")/, + "\\1#{new_version_number}\\3") + File.open(podspec_path, "w") { |file| file.puts text } +end diff --git a/extras/QPickerElement.h b/extras/QPickerElement.h deleted file mode 100644 index 03041134..00000000 --- a/extras/QPickerElement.h +++ /dev/null @@ -1,21 +0,0 @@ -#import -#import "QEntryElement.h" -#import "QPickerValueParser.h" - -@interface QPickerElement : QEntryElement -{ -@protected - id _valueParser; -} - -@property (nonatomic, strong) id valueParser; - -@property (nonatomic, strong) NSArray *items; -@property (nonatomic, readonly) NSArray *selectedIndexes; - -- (QPickerElement *)initWithTitle:(NSString *)title items:(NSArray *)items value:(id)value; - -- (void)reloadAllComponents; -- (void)reloadComponent:(NSInteger)index; - -@end diff --git a/extras/QPickerElement.m b/extras/QPickerElement.m deleted file mode 100644 index fe3fa576..00000000 --- a/extras/QPickerElement.m +++ /dev/null @@ -1,76 +0,0 @@ -#import "QPickerElement.h" -#import "QPickerTableViewCell.h" -#import "QPickerTabDelimitedStringParser.h" - -@implementation QPickerElement -{ -@private - NSArray *_items; - - UIPickerView *_pickerView; -} - -@synthesize items = _items; -@synthesize valueParser = _valueParser; - -- (QPickerElement *)init -{ - if (self = [super init]) { - self.valueParser = [QPickerTabDelimitedStringParser new]; - self.keepSelected = YES; - } - return self; -} - -- (QPickerElement *)initWithTitle:(NSString *)title items:(NSArray *)items value:(id)value -{ - if ((self = [super initWithTitle:title Value:value])) { - _items = items; - self.valueParser = [QPickerTabDelimitedStringParser new]; - } - return self; -} - -- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller -{ - QPickerTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:QPickerTableViewCellIdentifier]; - if (cell == nil) { - cell = [[QPickerTableViewCell alloc] init]; - } - [cell applyAppearanceForElement:self]; - - UIPickerView *pickerView = nil; - [cell prepareForElement:self inTableView:tableView pickerView:&pickerView]; - _pickerView = pickerView; - - cell.imageView.image = self.image; - - return cell; -} - -- (void)fetchValueIntoObject:(id)obj -{ - if (_key != nil) { - [obj setValue:_value forKey:_key]; - } -} - -- (NSArray *)selectedIndexes -{ - NSMutableArray *selectedIndexes = [NSMutableArray arrayWithCapacity:_pickerView.numberOfComponents]; - for (int component = 0; component < _pickerView.numberOfComponents; component++) { - [selectedIndexes addObject:[NSNumber numberWithInteger:[_pickerView selectedRowInComponent:component]]]; - } - return selectedIndexes; -} - -- (void)reloadAllComponents -{ - [_pickerView reloadAllComponents]; -} - -- (void)reloadComponent:(NSInteger)index -{ - [_pickerView reloadComponent:index]; -} -@end diff --git a/extras/QPickerTabDelimitedStringParser.h b/extras/QPickerTabDelimitedStringParser.h deleted file mode 100644 index 7559fa05..00000000 --- a/extras/QPickerTabDelimitedStringParser.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// QPickerTabDelimitedStringParser.h -// QuickDialog -// -// Created by HiveHicks on 05.04.12. -// - -#import -#import "QPickerValueParser.h" - -@interface QPickerTabDelimitedStringParser : NSObject - -@end diff --git a/extras/QPickerTabDelimitedStringParser.m b/extras/QPickerTabDelimitedStringParser.m deleted file mode 100644 index 031faf91..00000000 --- a/extras/QPickerTabDelimitedStringParser.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// QPickerTabDelimitedStringParser.m -// QuickDialog -// -// Created by HiveHicks on 05.04.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import "QPickerTabDelimitedStringParser.h" - -@implementation QPickerTabDelimitedStringParser - -- (id)objectFromComponentsValues:(NSArray *)componentsValues -{ - return [componentsValues componentsJoinedByString:@"\t"]; -} - -- (NSArray *)componentsValuesFromObject:(id)object -{ - NSString *stringValue = [object isKindOfClass:[NSString class]] ? object : [object description]; - return [stringValue componentsSeparatedByString:@"\t"]; -} - -@end diff --git a/extras/QPickerTableViewCell.h b/extras/QPickerTableViewCell.h deleted file mode 100644 index 40334629..00000000 --- a/extras/QPickerTableViewCell.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// QPickerTableViewCell.h -// QuickDialog -// -// Created by HiveHicks on 05.04.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import "QEntryTableViewCell.h" - -NSString * const QPickerTableViewCellIdentifier; - -@interface QPickerTableViewCell : QEntryTableViewCell -{ - UIPickerView *_pickerView; -} - -@property (nonatomic, strong) UIPickerView *pickerView; - -- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView pickerView:(UIPickerView **)pickerView; - -- (void)setPickerViewValue:(id)value; -- (id)getPickerViewValue; - -@end diff --git a/extras/QPickerTableViewCell.m b/extras/QPickerTableViewCell.m deleted file mode 100644 index 08bded02..00000000 --- a/extras/QPickerTableViewCell.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// QPickerTableViewCell.m -// QuickDialog -// -// Created by HiveHicks on 05.04.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import "QPickerTableViewCell.h" -#import "QuickDialog.h" -#import "QPickerElement.h" - -NSString * const QPickerTableViewCellIdentifier = @"QPickerTableViewCell"; - -@interface QPickerTableViewCell () -@property (nonatomic, readonly) QPickerElement *pickerElement; -@end - -@implementation QPickerTableViewCell - -@synthesize pickerView = _pickerView; - -- (QPickerTableViewCell *)init -{ - if ((self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:QPickerTableViewCellIdentifier])) - { - [self createSubviews]; - self.selectionStyle = UITableViewCellSelectionStyleBlue; - } - - return self; -} - -- (void)createSubviews -{ - [super createSubviews]; - _textField.hidden = YES; -} - -- (QPickerElement *)pickerElement -{ - return (QPickerElement *)_entryElement; -} - -- (void)textFieldDidEndEditing:(UITextField *)textField -{ - [super textFieldDidEndEditing:textField]; - self.selected = NO; -} - -- (void)textFieldDidBeginEditing:(UITextField *)textField -{ - [_pickerView sizeToFit]; - - _textField.inputView = _pickerView; - - if (self.pickerElement.value != nil) { - [self setPickerViewValue:self.pickerElement.value]; - } - - [super textFieldDidBeginEditing:textField]; - self.selected = YES; -} - -- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView pickerView:(UIPickerView **)pickerView -{ - [self prepareForElement:element inTableView:tableView]; - - _pickerView = [[UIPickerView alloc] init]; - _pickerView.showsSelectionIndicator = YES; - _pickerView.dataSource = self; - _pickerView.delegate = self; - - *pickerView = _pickerView; -} - -- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView -{ - [super prepareForElement:element inTableView:tableView]; - - QPickerElement *pickerElement = (QPickerElement *)element; - - if ([pickerElement.valueParser respondsToSelector:@selector(presentationOfObject:)]) { - self.detailTextLabel.text = [pickerElement.valueParser presentationOfObject:pickerElement.value]; - _textField.text = [pickerElement.valueParser presentationOfObject:pickerElement.value]; - } else { - self.detailTextLabel.text = [pickerElement.value description]; - _textField.text = [pickerElement.value description]; - } - - [self setNeedsLayout]; -} - -#pragma mark - UIPickerView data source and delegate - -- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView -{ - return self.pickerElement.items.count; -} - -- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component -{ - return [[self.pickerElement.items objectAtIndex:(NSUInteger) component] count]; -} - -- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component -{ - return [[[self.pickerElement.items objectAtIndex:(NSUInteger) component] objectAtIndex:(NSUInteger) row] description]; -} - -- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component -{ - self.pickerElement.value = [self getPickerViewValue]; - [self prepareForElement:_entryElement inTableView:_quickformTableView]; - [self.pickerElement handleEditingChanged]; -} - -#pragma mark - Getting/setting value from UIPickerView - -- (id)getPickerViewValue -{ - NSMutableArray *componentsValues = [NSMutableArray array]; - - for (int i = 0; i < _pickerView.numberOfComponents; i++) - { - NSInteger rowIndex = [_pickerView selectedRowInComponent:i]; - if (rowIndex >= 0) { - [componentsValues addObject:[self pickerView:_pickerView titleForRow:rowIndex forComponent:i]]; - } else { - [componentsValues addObject:[NSNull null]]; - } - } - - NSLog(@"AA%@", [self.pickerElement.valueParser objectFromComponentsValues:componentsValues]); - return [self.pickerElement.valueParser objectFromComponentsValues:componentsValues]; -} - -- (void)setPickerViewValue:(id)value -{ - NSArray *componentsValues = [self.pickerElement.valueParser componentsValuesFromObject:value]; - - for (int componentIndex = 0; componentIndex < componentsValues.count && componentIndex < _pickerView.numberOfComponents; componentIndex++) - { - id componentValue = [componentsValues objectAtIndex:(NSUInteger) componentIndex]; - NSInteger rowIndex = [[self.pickerElement.items objectAtIndex:componentIndex] indexOfObject:componentValue]; - if (rowIndex != NSNotFound) { - [_pickerView selectRow:rowIndex inComponent:componentIndex animated:YES]; - } - } -} - -@end diff --git a/extras/QPickerValueParser.h b/extras/QPickerValueParser.h deleted file mode 100644 index 0b0ccbf8..00000000 --- a/extras/QPickerValueParser.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// QPickerValueExtrator.h -// QuickDialog -// -// Created by HiveHicks on 05.04.12. -// - -#import - -@protocol QPickerValueParser - -@required -- (id)objectFromComponentsValues:(NSArray *)componentsValues; -- (NSArray *)componentsValuesFromObject:(id)object; - -@optional -- (NSString *)presentationOfObject:(id)object; - -@end diff --git a/libQuickDialog/libQuickDialog-Prefix.pch b/libQuickDialog/libQuickDialog-Prefix.pch deleted file mode 100644 index dde4aaab..00000000 --- a/libQuickDialog/libQuickDialog-Prefix.pch +++ /dev/null @@ -1,15 +0,0 @@ -// -// libQuickDialog-Prefix.pch -// QuickDialog -// -// Created by Matthias Bartelmeß on 28.10.11. -// Copyright (c) 2011 fourplusone. All rights reserved. -// - -#ifdef __OBJC__ - -#import -#import "QuickDialog.h" - -#endif - diff --git a/other/icon.png b/other/icon.png deleted file mode 100644 index 7bbdc44c..00000000 Binary files a/other/icon.png and /dev/null differ diff --git a/other/icon.psd b/other/icon.psd deleted file mode 100644 index 3f16b1ca..00000000 Binary files a/other/icon.psd and /dev/null differ diff --git a/other/quickdialog-logo.psd b/other/quickdialog-logo.psd deleted file mode 100644 index a6f7f194..00000000 Binary files a/other/quickdialog-logo.psd and /dev/null differ diff --git a/other/quickdialog1.png b/other/quickdialog1.png deleted file mode 100644 index c0b5a362..00000000 Binary files a/other/quickdialog1.png and /dev/null differ diff --git a/other/quickdialog1small.png b/other/quickdialog1small.png deleted file mode 100644 index c009ca9e..00000000 Binary files a/other/quickdialog1small.png and /dev/null differ diff --git a/other/quickdialog2.png b/other/quickdialog2.png deleted file mode 100644 index 1da1068f..00000000 Binary files a/other/quickdialog2.png and /dev/null differ diff --git a/other/quickdialog3.png b/other/quickdialog3.png deleted file mode 100644 index 3698ac4e..00000000 Binary files a/other/quickdialog3.png and /dev/null differ diff --git a/quickdialog/DOAutocompleteTextField.h b/quickdialog/DOAutocompleteTextField.h deleted file mode 100644 index 808c6e64..00000000 --- a/quickdialog/DOAutocompleteTextField.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2011 DoAT. All rights reserved. - * - * Updated by Iain Stubbs 2012 for use in QAutoEntryElement - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY DoAT “AS IS” WITHOUT ANY WARRANTIES WHATSOEVER. - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF NON INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL DoAT OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of - * the authors and should not be interpreted as representing official policies, - * either expressed or implied, of DoAT. - */ - -#import - -@class DOAutocompleteTextField; - -@protocol DOAutocompleteTextFieldDelegate - -@optional -- (NSString*)textField:(DOAutocompleteTextField*)textField completionForPrefix:(NSString*)prefix; - -@end - -@interface DOAutocompleteTextField : UITextField -{ - UILabel *_autocompleteLabel; - NSString *_autoCompleteString; - NSArray *_autoCompletes; -} - -- (CGRect)autocompleteRectForBounds:(CGRect)bounds; -- (void)setAutocompleteTextColor:(UIColor*)color; -- (UIColor*)autocompleteTextColor; -- (NSString*)getAutoCompleteText; -- (void)setAutoCompletes:(NSArray*)autoCompletes; -- (NSArray*)getAutoCompletes; - -@end diff --git a/quickdialog/DOAutocompleteTextField.m b/quickdialog/DOAutocompleteTextField.m deleted file mode 100644 index 5f963713..00000000 --- a/quickdialog/DOAutocompleteTextField.m +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2011 DoAT. All rights reserved. - * - * Updated by Iain Stubbs 2012 for use in QAutoEntryElement - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY DoAT “AS IS” WITHOUT ANY WARRANTIES WHATSOEVER. - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF NON INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL DoAT OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of - * the authors and should not be interpreted as representing official policies, - * either expressed or implied, of DoAT. - */ - -#import "DOAutocompleteTextField.h" -#import "NSMutableArray+IMSExtensions.h" - -@interface DOAutocompleteTextField (Private) - -- (void)setupSubviews; -- (void)_textDidChange:(NSNotification*)notification; -- (void)_updateAutocompleteLabel; - -@end - -@implementation DOAutocompleteTextField - -- (id)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) - { - [self setupSubviews]; - } - - return self; -} - -- (void)awakeFromNib -{ - [self setupSubviews]; -} - -- (void)setupSubviews -{ - _autocompleteLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - _autocompleteLabel.font = self.font; - _autocompleteLabel.backgroundColor = [UIColor clearColor]; - _autocompleteLabel.textColor = [UIColor lightGrayColor]; - _autocompleteLabel.lineBreakMode = NSLineBreakByClipping; - [self addSubview:_autocompleteLabel]; - [self bringSubviewToFront:_autocompleteLabel]; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_textDidChange:) name:UITextFieldTextDidChangeNotification object:self]; -} - -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:self]; -} - -- (BOOL)becomeFirstResponder -{ - if ([self clearsOnBeginEditing]) - { - _autocompleteLabel.text = @""; - } - - [self _tryToUpdateLabelWithNewCompletion]; - _autocompleteLabel.hidden = NO; - return [super becomeFirstResponder]; -} - -- (BOOL)resignFirstResponder -{ - _autocompleteLabel.hidden = YES; - return [super resignFirstResponder]; -} - -- (void)setFont:(UIFont *)font -{ - [super setFont:font]; - [_autocompleteLabel setFont:font]; -} - -- (CGRect)autocompleteRectForBounds:(CGRect)bounds -{ - CGRect returnRect = CGRectZero; - CGRect textRect = [self textRectForBounds:self.bounds]; - // NSLog(@"textRect: %@", NSStringFromCGRect(textRect)); - - CGSize prefixTextSize = [self.text sizeWithFont:self.font - constrainedToSize:textRect.size - lineBreakMode:NSLineBreakByCharWrapping]; - // NSLog(@"prefixTextSize: %@", NSStringFromCGSize(prefixTextSize)); - - CGSize autocompleteTextSize = [_autoCompleteString sizeWithFont:self.font - constrainedToSize:CGSizeMake(textRect.size.width-prefixTextSize.width, textRect.size.height) - lineBreakMode:NSLineBreakByCharWrapping]; - - // NSLog(@"autocompleteTextSize: %@", NSStringFromCGSize(autocompleteTextSize)); - - returnRect = CGRectMake(textRect.origin.x + prefixTextSize.width, - textRect.origin.y,//+.5, - autocompleteTextSize.width, - textRect.size.height); - - return returnRect; -} - -- (void)setAutocompleteTextColor:(UIColor*)color -{ - _autocompleteLabel.textColor = color; -} - -- (UIColor*)autocompleteTextColor -{ - return _autocompleteLabel.textColor; -} - -- (void)_textDidChange:(NSNotification*)notification -{ - [self _tryToUpdateLabelWithNewCompletion]; -} - -- (void)_tryToUpdateLabelWithNewCompletion -{ - if ([((id)self.delegate) respondsToSelector:@selector(textField:completionForPrefix:)] ) - { - _autoCompleteString = [((id)self.delegate) textField:self completionForPrefix:self.text]; - [self _updateAutocompleteLabel]; - } -} - -- (void)_updateAutocompleteLabel -{ - [_autocompleteLabel setText:_autoCompleteString]; - [_autocompleteLabel sizeToFit]; - [_autocompleteLabel setFrame: [self autocompleteRectForBounds:self.bounds]]; -} - -- (NSString*)getAutoCompleteText -{ - NSMutableArray *ac = [NSMutableArray arrayWithObjects:self.text,_autoCompleteString, nil]; - return [ac concatStrings]; -} - -- (void)setAutoCompletes:(NSArray*)autoCompletes -{ - _autoCompletes = autoCompletes; -} - -- (NSArray*)getAutoCompletes -{ - return _autoCompletes; -} -@end - diff --git a/quickdialog/NSMutableArray+IMSExtensions.h b/quickdialog/NSMutableArray+IMSExtensions.h deleted file mode 100644 index 16573d81..00000000 --- a/quickdialog/NSMutableArray+IMSExtensions.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// NSMutableArray+IMSExtensions.h -// QuickDialog -// -// Created by Iain Stubbs on 16/02/12. -// Copyright (c) 2012 Parallel ThirtyEight South. All rights reserved. -// - -#import - -@interface NSMutableArray (IMSExtensions) - -- (NSString*)concatStrings; - -@end - diff --git a/quickdialog/NSMutableArray+IMSExtensions.m b/quickdialog/NSMutableArray+IMSExtensions.m deleted file mode 100644 index 27151a7a..00000000 --- a/quickdialog/NSMutableArray+IMSExtensions.m +++ /dev/null @@ -1,19 +0,0 @@ -// -// NSMutableArray+IMSExtensions.m -// PsychAu -// -// Created by Iain Stubbs on 30/01/12. -// Copyright (c) 2012 Parallel ThirtyEight South. All rights reserved. -// - -#import "NSMutableArray+IMSExtensions.h" - -@implementation NSMutableArray (IMSExtensions) - -- (NSString*)concatStrings -{ - NSArray *array = [NSArray arrayWithArray:self]; - return [array componentsJoinedByString: @""]; -} - -@end diff --git a/quickdialog/NSMutableArray+MoveObject.h b/quickdialog/NSMutableArray+MoveObject.h deleted file mode 100644 index 98b5f89c..00000000 --- a/quickdialog/NSMutableArray+MoveObject.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface NSMutableArray (MoveObject) - -- (void)moveObjectFromIndex:(NSUInteger)from toIndex:(NSUInteger)to; - -@end diff --git a/quickdialog/NSMutableArray+MoveObject.m b/quickdialog/NSMutableArray+MoveObject.m deleted file mode 100644 index 786fcb1f..00000000 --- a/quickdialog/NSMutableArray+MoveObject.m +++ /dev/null @@ -1,19 +0,0 @@ -#import "NSMutableArray+MoveObject.h" - -@implementation NSMutableArray (MoveObject) - -- (void)moveObjectFromIndex:(NSUInteger)from toIndex:(NSUInteger)to -{ - if (to == from) - return; - - id objectToMove = [self objectAtIndex:from]; - [self removeObjectAtIndex:from]; - if (to >= [self count]) { - [self addObject:objectToMove]; - } else { - [self insertObject:objectToMove atIndex:to]; - } -} -@end - diff --git a/quickdialog/QAutoEntryElement.h b/quickdialog/QAutoEntryElement.h deleted file mode 100644 index edeb8fea..00000000 --- a/quickdialog/QAutoEntryElement.h +++ /dev/null @@ -1,44 +0,0 @@ -// created by Iain Stubbs but based on the QEntryElement.h -// -// 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 "QLabelElement.h" -#import "DOAutocompleteTextField.h" - -#import "QEntryElement.h" - - -@interface QAutoEntryElement : QEntryElement - -@property(nonatomic, retain) NSString *textValue; -@property(nonatomic, retain) NSString *placeholder; -@property(nonatomic, retain) NSArray *autoCompleteValues; -@property(nonatomic, retain) UIColor *autoCompleteColor; -@property(assign) BOOL hiddenToolbar; -@property(nonatomic, retain) NSString *lastAutoComplete; - -@property(nonatomic, unsafe_unretained) id delegate; - -@property(nonatomic) UITextAutocapitalizationType autocapitalizationType; // default is UITextAutocapitalizationTypeSentences -@property(nonatomic) UITextAutocorrectionType autocorrectionType; // default is UITextAutocorrectionTypeDefault -@property(nonatomic) UIKeyboardType keyboardType; // default is UIKeyboardTypeDefault -@property(nonatomic) UIKeyboardAppearance keyboardAppearance; // default is UIKeyboardAppearanceDefault -@property(nonatomic) UIReturnKeyType returnKeyType; // default is UIReturnKeyDefault (See note under UIReturnKeyType enum) -@property(nonatomic) BOOL enablesReturnKeyAutomatically; // default is NO (when YES, will automatically disable return key when text widget has zero-length contents, and will automatically enable when text widget has non-zero-length contents) -@property(nonatomic,getter=isSecureTextEntry) BOOL secureTextEntry; // default is NO - -- (QAutoEntryElement *)init; - -- (QAutoEntryElement *)initWithTitle:(NSString *)string value:(NSString *)param placeholder:(NSString *)string1; - -@end diff --git a/quickdialog/QAutoEntryElement.m b/quickdialog/QAutoEntryElement.m deleted file mode 100644 index 11c7a199..00000000 --- a/quickdialog/QAutoEntryElement.m +++ /dev/null @@ -1,116 +0,0 @@ -// created by Iain Stubbs but based on QEntryTableViewCell.m -// -// 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 "QAutoEntryElement.h" -#import "QuickDialog.h" - -@implementation QAutoEntryElement - -@synthesize textValue; -@synthesize placeholder; -@synthesize hiddenToolbar; -@synthesize autoCompleteValues = _autoCompleteValues; -@synthesize lastAutoComplete; -@synthesize autoCompleteColor; - -@synthesize delegate = _delegate; - -- (QAutoEntryElement *)init { - self = [super init]; - if (self){ - self.autocapitalizationType = UITextAutocapitalizationTypeSentences; - self.autocorrectionType = UITextAutocorrectionTypeDefault; - self.keyboardType = UIKeyboardTypeDefault; - self.keyboardAppearance = UIKeyboardAppearanceDefault; - self.returnKeyType = UIReturnKeyDefault; - self.enablesReturnKeyAutomatically = NO; - self.secureTextEntry = NO; - } - return self; -} - -- (QAutoEntryElement *)initWithTitle:(NSString *)string value:(NSString *)param placeholder:(NSString *)string1; -{ - self = [self init]; - if (self) { - _title = string; - textValue = param; - placeholder = string1; - } - return self; -} - - -- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller { - - QAutoEntryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QuickformAutoEntryElement"]; - if (cell==nil){ - cell = [[QAutoEntryTableViewCell alloc] init]; - } - - [cell applyAppearanceForElement:self]; - 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 { - if(self.enabled){ - [super selected:tableView controller:controller indexPath:indexPath]; - } -} - -- (void)fetchValueIntoObject:(id)obj { - if (_key==nil) - return; - - [obj setValue:textValue forKey:_key]; -} - -- (NSString *)textField:(DOAutocompleteTextField *)textField completionForPrefix:(NSString *)prefix -{ - NSString* lowPrefix = [prefix lowercaseString]; - for (NSString *string in [textField getAutoCompletes]) - { - NSString* strlower = [string lowercaseString]; - if([strlower hasPrefix:lowPrefix]) - { - NSRange range = NSMakeRange(0,prefix.length); - lastAutoComplete = string; - return [string stringByReplacingCharactersInRange:range withString:@""]; - } - } - lastAutoComplete = @""; - return @""; -} - - - - -#pragma mark - UITextInputTraits - -@synthesize autocorrectionType = _autocorrectionType; -@synthesize autocapitalizationType = _autocapitalizationType; -@synthesize keyboardType = _keyboardType; -@synthesize keyboardAppearance = _keyboardAppearance; -@synthesize returnKeyType = _returnKeyType; -@synthesize enablesReturnKeyAutomatically = _enablesReturnKeyAutomatically; -@synthesize secureTextEntry = _secureTextEntry; - -@end - diff --git a/quickdialog/QAutoEntryTableViewCell.h b/quickdialog/QAutoEntryTableViewCell.h deleted file mode 100644 index 3dcb6c3d..00000000 --- a/quickdialog/QAutoEntryTableViewCell.h +++ /dev/null @@ -1,46 +0,0 @@ -// created by Iain Stubbs but based on QEntryTableViewCell.h -// -// 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 - -#import "DOAutocompleteTextField.h" -#import "QEntryTableViewCell.h" - -@class QEntryElement; -@class QuickDialogTableView; - - -@interface QAutoEntryTableViewCell : QEntryTableViewCell { - - DOAutocompleteTextField *txtField; - NSArray*autoCompleteValues; - UIColor *autoColor; - -@protected -} - -@property(nonatomic, strong) DOAutocompleteTextField *autoCompleteField; -@property(nonatomic, retain) NSArray *autoCompleteValues; -@property(nonatomic, strong) NSString *lastFullStringWithAutocompletion; - - -- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView; - -- (void)createSubviews; - -- (void)recalculateEntryFieldPosition; - -@end diff --git a/quickdialog/QAutoEntryTableViewCell.m b/quickdialog/QAutoEntryTableViewCell.m deleted file mode 100644 index 6b3a389e..00000000 --- a/quickdialog/QAutoEntryTableViewCell.m +++ /dev/null @@ -1,169 +0,0 @@ -// created by Iain Stubbs but based on QEntryTableViewCell.m -// -// 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 "QAutoEntryTableViewCell.h" -#import "QuickDialog.h" - -@implementation QAutoEntryTableViewCell { - NSString *_lastFullStringWithAutocompletion; - QAutoEntryElement *_autoEntryElement; - BOOL _autoCompleteEnabled; -} - -@synthesize autoCompleteField = _autoCompleteField; -@synthesize autoCompleteValues; -@synthesize lastFullStringWithAutocompletion = _lastFullStringWithAutocompletion; - - -- (void)createSubviews { - _autoCompleteField = [[DOAutocompleteTextField alloc] init]; - _autoCompleteField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _autoCompleteField.borderStyle = UITextBorderStyleNone; - _autoCompleteField.delegate = self; - _autoCompleteField.clearButtonMode = UITextFieldViewModeWhileEditing; - _autoCompleteField.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); - [_autoCompleteField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]; - [self.contentView addSubview:_autoCompleteField]; - [self setNeedsLayout]; -} - -- (QAutoEntryTableViewCell *)init { - self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformAutoEntryElement"]; - if (self!=nil){ - self.selectionStyle = UITableViewCellSelectionStyleNone; - - [self createSubviews]; - } - return self; -} - - -- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView{ - _quickformTableView = tableView; - _autoCompleteField.delegate = self; - - _entryElement = element; - _autoEntryElement = (QAutoEntryElement *)element; - - self.textLabel.text = _entryElement.title; - self.autoCompleteValues = _autoEntryElement.autoCompleteValues; - _autoCompleteField.text = _autoEntryElement.textValue; - _autoCompleteField.placeholder = _autoEntryElement.placeholder; - _autoCompleteField.autocapitalizationType = _autoEntryElement.autocapitalizationType; - _autoCompleteField.autocorrectionType = _autoEntryElement.autocorrectionType; - _autoCompleteField.keyboardType = _autoEntryElement.keyboardType; - _autoCompleteField.keyboardAppearance = _autoEntryElement.keyboardAppearance; - _autoCompleteField.secureTextEntry = _autoEntryElement.secureTextEntry; - _autoCompleteField.autocompleteTextColor = _autoEntryElement.autoCompleteColor; - _autoCompleteField.returnKeyType = _autoEntryElement.returnKeyType; - _autoCompleteField.enablesReturnKeyAutomatically = _autoEntryElement.enablesReturnKeyAutomatically; - - if (_autoEntryElement.hiddenToolbar){ - _autoCompleteField.inputAccessoryView = nil; - } else { - _autoCompleteField.inputAccessoryView = [self createActionBar]; - } - - _autoCompleteField.userInteractionEnabled = element.enabled; - - [self updatePrevNextStatus]; -} - -- (BOOL)handleActionBarDone:(UIBarButtonItem *)doneButton { - [_autoCompleteField resignFirstResponder]; - return [super handleActionBarDone:doneButton]; -} - - --(void)recalculateEntryFieldPosition { - _entryElement.parentSection.entryPosition = CGRectZero; - _autoCompleteField.frame = [self calculateFrameForEntryElement]; - CGRect labelFrame = self.textLabel.frame; - self.textLabel.frame = CGRectMake(labelFrame.origin.x, labelFrame.origin.y, - _entryElement.parentSection.entryPosition.origin.x-20, labelFrame.size.height); -} - -- (void)layoutSubviews { - [super layoutSubviews]; - [self recalculateEntryFieldPosition]; -} - -- (void)prepareForReuse { - _quickformTableView = nil; - _entryElement = nil; -} - --(void)textFieldDidEndEditing:(UITextField *)textField { - if (_autoCompleteEnabled && ![_entryElement.textValue isEqualToString:self.lastFullStringWithAutocompletion]) { - _autoCompleteField.text = self.lastFullStringWithAutocompletion; - // In an AutoEntryElement, a DidEndEditing event might actually be a - // change to the text value. This is because it is an implicit acceptance - // of the displayed auto-chosen value. - _entryElement.textValue = _autoCompleteField.text; - [_entryElement handleEditingChanged]; - } -} - -- (void)textFieldEditingChanged:(UITextField *)textField { - _autoCompleteEnabled = YES; - _entryElement.textValue = _autoCompleteField.text; - [_entryElement handleEditingChanged]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - BOOL previousAutoCompleteEnabledValue = _autoCompleteEnabled; - _autoCompleteEnabled = NO; - BOOL result = [super textFieldShouldReturn:textField]; - [textField resignFirstResponder]; - _autoCompleteEnabled = previousAutoCompleteEnabledValue; - return result; -} -- (BOOL)becomeFirstResponder { - _autoCompleteEnabled = NO; - [_autoCompleteField becomeFirstResponder]; - return YES; -} - -#pragma mark - DOAutocompleteTextFieldDelegate -- (NSString *)textField:(DOAutocompleteTextField *)textField completionForPrefix:(NSString *)prefix -{ - if (!prefix || !_autoCompleteEnabled) { - return nil; - } - - NSString* lowPrefix = [prefix lowercaseString]; - - for (NSString *string in autoCompleteValues) - { - NSString* strlower = [string lowercaseString]; - if([strlower hasPrefix:lowPrefix]) - { - NSRange range = NSMakeRange(0,prefix.length); - _lastFullStringWithAutocompletion = string; - return [string stringByReplacingCharactersInRange:range withString:@""]; - } - } - - // If we have got here, there is no auto-completion available. - // We want to allow the user to save this string, so the - // last full string with auto-completion is == the string the user has - // entered. - _lastFullStringWithAutocompletion = prefix; - - // Return null string to indicate no autocompletion possible - return @""; -} - -@end diff --git a/quickdialog/QClassicAppearance.h b/quickdialog/QClassicAppearance.h deleted file mode 100644 index 105a6746..00000000 --- a/quickdialog/QClassicAppearance.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Created by Eduardo Scoz on 7/18/13. -// -// To change the template use AppCode | Preferences | File Templates. -// - - -#import - - -@interface QClassicAppearance : QAppearance -@end diff --git a/quickdialog/QClassicAppearance.m b/quickdialog/QClassicAppearance.m deleted file mode 100644 index 87d76954..00000000 --- a/quickdialog/QClassicAppearance.m +++ /dev/null @@ -1,178 +0,0 @@ -// -// Created by Eduardo Scoz on 7/18/13. -// -// To change the template use AppCode | Preferences | File Templates. -// - - -#import "QClassicAppearance.h" - - -@implementation QClassicAppearance { - -} - -- (void)setDefaults { - [super setDefaults]; - - self.labelColorDisabled = [UIColor lightGrayColor]; - self.labelColorEnabled = [UIColor blackColor]; - - self.actionColorDisabled = [UIColor lightGrayColor]; - self.actionColorEnabled = [UIColor blackColor]; - - self.sectionTitleFont = [UIFont boldSystemFontOfSize:16]; - self.sectionTitleShadowColor = [UIColor colorWithWhite:1.0 alpha:1]; - self.sectionTitleColor = [UIColor colorWithRed:0.298039 green:0.337255 blue:0.423529 alpha:1.000]; - - self.sectionFooterFont = [UIFont systemFontOfSize:14]; - self.sectionFooterColor = [UIColor colorWithRed:0.298039 green:0.337255 blue:0.423529 alpha:1.000]; - - self.labelFont = [UIFont boldSystemFontOfSize:15]; - self.labelAlignment = NSTextAlignmentLeft; - - self.backgroundColorDisabled = [UIColor colorWithWhite:0.9605 alpha:1.0000]; - self.backgroundColorEnabled = [UIColor whiteColor]; - - self.entryTextColorDisabled = [UIColor lightGrayColor]; - self.entryTextColorEnabled = [UIColor blackColor]; - self.entryAlignment = NSTextAlignmentLeft; - self.entryFont = [UIFont systemFontOfSize:15]; - - self.buttonAlignment = NSTextAlignmentCenter; - - self.valueColorEnabled = [UIColor colorWithRed:0.1653 green:0.2532 blue:0.4543 alpha:1.0000]; - self.valueColorDisabled = [UIColor lightGrayColor]; - self.valueFont = [UIFont systemFontOfSize:15]; - self.valueAlignment = NSTextAlignmentRight; - - self.toolbarStyle = UIBarStyleBlack; - self.toolbarTranslucent = YES; - - self.cellBorderWidth = 20; -} - - -- (UIView *)buildHeaderForSection:(QSection *)section andTableView:(QuickDialogTableView *)tableView andIndex:(NSInteger)index{ - - float margin = [self currentGroupedTableViewMarginForTableView:tableView] + 8; - if (self.sectionTitleFont!=nil && tableView.style == UITableViewStyleGrouped){ - CGFloat height = [tableView.delegate tableView:tableView heightForHeaderInSection:index]; - UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, height)]; - containerView.backgroundColor = [UIColor clearColor]; - containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth; - - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(margin, 8, tableView.bounds.size.width-margin-margin, height -4)]; - label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - label.text = section.title; - [containerView addSubview:label]; - label.backgroundColor = [UIColor clearColor]; - label.font = self.sectionTitleFont; - label.numberOfLines = 0; - label.shadowColor = self.sectionTitleShadowColor; - label.shadowOffset = CGSizeMake(0, 1); - label.textColor = self.sectionTitleColor; - return containerView; - } - return nil; -} - - - -- (UIView *)buildFooterForSection:(QSection *)section andTableView:(QuickDialogTableView *)tableView andIndex:(NSInteger)index { - - float margin = [self currentGroupedTableViewMarginForTableView:tableView] + 8; - if (self.sectionFooterFont!=nil && tableView.style == UITableViewStyleGrouped){ - CGSize textSize = [section.footer sizeWithFont:self.sectionFooterFont constrainedToSize:CGSizeMake(tableView.bounds.size.width-margin-margin, 1000000)]; - UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, textSize.height)]; - containerView.backgroundColor = [UIColor clearColor]; - containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth; - - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(margin, 5, tableView.bounds.size.width-margin-margin, textSize.height)]; - label.autoresizingMask = UIViewAutoresizingFlexibleWidth; - label.text = section.footer; - label.textAlignment = NSTextAlignmentCenter; - [containerView addSubview:label]; - label.backgroundColor = [UIColor clearColor]; - label.font = self.sectionFooterFont; - label.textColor = self.sectionFooterColor; - label.numberOfLines = 0; - label.shadowColor = [UIColor colorWithWhite:1.0 alpha:1]; - label.shadowOffset = CGSizeMake(0, 1); - - section.footerView = containerView; - } - return nil; -} - -- (CGFloat)heightForHeaderInSection:(QSection *)section andTableView:(QuickDialogTableView *)tableView andIndex:(NSInteger)index { - - float margin = [self currentGroupedTableViewMarginForTableView:tableView] + 8; - - if (section.headerView!=nil) - return section.headerView.bounds.size.height; - - if (section.title==nil) - return 0; - - if (!tableView.root.grouped) { - - return section.footer == NULL - ? -1 - : [section.title sizeWithFont:self.sectionTitleFont constrainedToSize:CGSizeMake(tableView.bounds.size.width-margin-margin, 1000000)].height+22; - } - - CGFloat stringTitleHeight = 0; - - if (section.title != nil) { - CGFloat maxWidth = tableView.bounds.size.width - (section.rootElement.grouped ? 40 : 20); - CGFloat maxHeight = 9999; - CGSize maximumLabelSize = CGSizeMake(maxWidth,maxHeight); - QAppearance *appearance = ((QuickDialogTableView *)tableView).root.appearance; - CGSize expectedLabelSize = [section.title sizeWithFont:appearance==nil? [UIFont systemFontOfSize:[UIFont labelFontSize]] : appearance.sectionTitleFont - constrainedToSize:maximumLabelSize - lineBreakMode:NSLineBreakByWordWrapping]; - - stringTitleHeight = expectedLabelSize.height+24.f; - } - - - return section.title != NULL? stringTitleHeight : 0; -} - -- (CGFloat)heightForFooterInSection:(QSection *)section andTableView:(QuickDialogTableView *)tableView andIndex:(NSInteger)index { - - float margin = [self currentGroupedTableViewMarginForTableView:tableView] + 8; - if (section.footerView!=nil) - return section.footerView.bounds.size.height; - - QAppearance *appearance = tableView.root.appearance; - - return section.footer == NULL - ? -1 - : [section.footer sizeWithFont:appearance.sectionFooterFont constrainedToSize:CGSizeMake(tableView.bounds.size.width-margin-margin, 1000000)].height+22; -} - -- (void)cell:(UITableViewCell *)cell willAppearForElement:(QElement *)element atIndexPath:(NSIndexPath *)path { - -} - - -- (float) currentGroupedTableViewMarginForTableView:(UITableView *)tableView -{ - float marginWidth; - if(tableView.bounds.size.width > 20) - { - marginWidth = tableView.bounds.size.width < 400 ? 10 : MAX(31, MIN(45, tableView.bounds.size.width * 0.06)); - } - else - { - marginWidth = tableView.bounds.size.width - 10; - } - return marginWidth; -} - - - - -@end diff --git a/quickdialog/QCountdownElement.h b/quickdialog/QCountdownElement.h deleted file mode 100644 index fa94b65e..00000000 --- a/quickdialog/QCountdownElement.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - - -@interface QCountdownElement : QDateTimeInlineElement -@end diff --git a/quickdialog/QCountdownElement.m b/quickdialog/QCountdownElement.m deleted file mode 100644 index 13d1ad03..00000000 --- a/quickdialog/QCountdownElement.m +++ /dev/null @@ -1,44 +0,0 @@ -#import "QCountdownElement.h" - - -@implementation QCountdownElement { - - NSNumber *_ticks; -} - -- (QEntryElement *)init { - self = [super init]; - if (self) { - self.ticksValue = [NSNumber numberWithDouble:0]; - } - - return self; -} - -- (void)setTicksValue:(NSNumber *)ticksValue { - _ticks = ticksValue; -} - -- (NSNumber *)ticksValue { - return _ticks; -} - - -- (NSDate *)dateValue { - return [NSDate dateWithTimeIntervalSinceNow:self.ticksValue.doubleValue]; -} - -- (void)setDateValue:(NSDate *)dateValue { - NSLog(@"Don't set the date on the QCountdownElement"); -} - - -- (UITableViewCell *)getCellForTableView:(QuickDialogTableView *)tableView controller:(QuickDialogController *)controller { - self.mode = UIDatePickerModeCountDownTimer; - QDateEntryTableViewCell *cell = (QDateEntryTableViewCell *) [super getCellForTableView:tableView controller:controller]; - - return cell; -} - - -@end diff --git a/quickdialog/QDynamicDataSection.h b/quickdialog/QDynamicDataSection.h deleted file mode 100644 index 92830547..00000000 --- a/quickdialog/QDynamicDataSection.h +++ /dev/null @@ -1,12 +0,0 @@ -#import - -#import "QSection.h" -@interface QDynamicDataSection : QSection { - - - -} -@property(nonatomic, strong) NSString *emptyMessage; - - -@end diff --git a/quickdialog/QElement+Appearance.h b/quickdialog/QElement+Appearance.h deleted file mode 100644 index 6e9d5595..00000000 --- a/quickdialog/QElement+Appearance.h +++ /dev/null @@ -1,13 +0,0 @@ -#import - -@class QAppearance; - -@interface QElement (Appearance) - -@property(nonatomic, retain) QAppearance *appearance; - -+ (QAppearance *)appearance; -+ (void)setAppearance:(QAppearance *)newAppearance; - - -@end diff --git a/quickdialog/QEntryTableViewCell.m b/quickdialog/QEntryTableViewCell.m deleted file mode 100644 index 959c5b18..00000000 --- a/quickdialog/QEntryTableViewCell.m +++ /dev/null @@ -1,325 +0,0 @@ -// -// 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" -#import "QTextField.h" - -@interface QEntryTableViewCell () -- (void)handleActionBarPreviousNext:(UISegmentedControl *)control; -@end - -@implementation QEntryTableViewCell { - UISegmentedControl *_prevNext; -} -@synthesize textField = _textField; - --(UIToolbar *)createActionBar { - UIToolbar *actionBar = [[UIToolbar alloc] init]; - [actionBar sizeToFit]; - - UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", @"") - style:UIBarButtonItemStyleDone target:self - action:@selector(handleActionBarDone:)]; - - _prevNext = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:NSLocalizedString(@"Previous", @""), NSLocalizedString(@"Next", @""), nil]]; - _prevNext.momentary = YES; - _prevNext.segmentedControlStyle = UISegmentedControlStyleBar; - _prevNext.tintColor = actionBar.tintColor; - [_prevNext addTarget:self action:@selector(handleActionBarPreviousNext:) forControlEvents:UIControlEventValueChanged]; - UIBarButtonItem *prevNextWrapper = [[UIBarButtonItem alloc] initWithCustomView:_prevNext]; - UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; - [actionBar setItems:[NSArray arrayWithObjects:prevNextWrapper, flexible, doneButton, nil]]; - - return actionBar; -} - -- (void)createSubviews { - self.textField = [[QTextField alloc] init]; - - [self setNeedsLayout]; -} - -- (void)setTextField:(UITextField *)textField -{ - if (_textField!=nil){ - [_textField removeTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]; - [_textField removeFromSuperview]; - } - _textField = textField; - _textField.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; - _textField.borderStyle = UITextBorderStyleNone; - _textField.delegate = self; - _textField.clearButtonMode = UITextFieldViewModeWhileEditing; - _textField.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); - [_textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]; - [self.contentView addSubview:_textField]; -} - - -- (QEntryTableViewCell *)init { - self = [self initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"QuickformEntryElement"]; - if (self!=nil){ - self.selectionStyle = UITableViewCellSelectionStyleNone; - - [self createSubviews]; - } - return self; -} - -- (CGRect)calculateFrameForEntryElement { - int extra = (self.textField.clearButtonMode == UITextFieldViewModeNever) ? 15 :10; - if (_entryElement.title == NULL && _entryElement.image==NULL) { - return CGRectMake(10,10,self.contentView.frame.size.width-10-extra, self.frame.size.height-20); - } - if (_entryElement.title == NULL && _entryElement.image!=NULL){ - self.imageView.image = _entryElement.image; - [self.imageView sizeToFit]; - return CGRectMake(CGRectGetMaxX(self.imageView.frame) + 10, 10, self.contentView.frame.size.width-10-self.imageView.frame.size.width-extra , self.frame.size.height-20); - } - CGFloat totalWidth = self.contentView.frame.size.width; - CGFloat titleWidth = 0; - - if (CGRectEqualToRect(CGRectZero, _entryElement.parentSection.entryPosition)) { - for (QElement *el in _entryElement.parentSection.elements){ - if ([el isKindOfClass:[QEntryElement class]]){ - QEntryElement *q = (QEntryElement*)el; - CGFloat imageWidth = q.image == NULL ? 0 : self.imageView.frame.size.width; - CGFloat fontSize = self.textLabel.font.pointSize == 0? 17 : self.textLabel.font.pointSize; - CGSize size = [((QEntryElement *)el).title sizeWithFont:[self.textLabel.font fontWithSize:fontSize] forWidth:CGFLOAT_MAX lineBreakMode:NSLineBreakByWordWrapping] ; - CGFloat width = size.width + imageWidth + 20; - if (width>titleWidth) - titleWidth = width; - } - } - int inset = 0; - if ([self respondsToSelector:@selector(separatorInset)]) { - inset = self.separatorInset.left; - }; - _entryElement.parentSection.entryPosition = CGRectMake(titleWidth+20,10,totalWidth-titleWidth-_entryElement.appearance.cellBorderWidth-extra-inset, self.frame.size.height-20); - } - - return _entryElement.parentSection.entryPosition; -} - -- (void)updatePrevNextStatus { - [_prevNext setEnabled:[_entryElement.parentSection.rootElement findElementToFocusOnBefore:_entryElement]!=nil forSegmentAtIndex:0]; - [_prevNext setEnabled:[_entryElement.parentSection.rootElement findElementToFocusOnAfter:_entryElement]!=nil forSegmentAtIndex:1]; -} - -- (void)prepareForElement:(QEntryElement *)element inTableView:(QuickDialogTableView *)tableView{ - [self applyAppearanceForElement:element]; - - self.textLabel.text = element.title; - self.labelingPolicy = element.labelingPolicy; - - _quickformTableView = tableView; - _entryElement = element; - _textField.text = _entryElement.textValue; - _textField.placeholder = _entryElement.placeholder; - if ([_textField isKindOfClass:[QTextField class]]) { - QTextField *qtf = (QTextField *) _textField; - qtf.prefix = _entryElement.prefix; - qtf.suffix = _entryElement.suffix; - } - - _textField.autocapitalizationType = _entryElement.autocapitalizationType; - _textField.autocorrectionType = _entryElement.autocorrectionType; - _textField.keyboardType = _entryElement.keyboardType; - _textField.keyboardAppearance = _entryElement.keyboardAppearance; - _textField.secureTextEntry = _entryElement.secureTextEntry; - _textField.clearsOnBeginEditing = _entryElement.clearsOnBeginEditing; - _textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _textField.textAlignment = _entryElement.appearance.entryAlignment; - - _textField.returnKeyType = _entryElement.returnKeyType; - _textField.enablesReturnKeyAutomatically = _entryElement.enablesReturnKeyAutomatically; - - self.accessoryType = _entryElement.accessoryType; - - if (_entryElement.hiddenToolbar){ - _textField.inputAccessoryView = nil; - } else if (_textField!=nil){ - UIToolbar *toolbar = [self createActionBar]; - toolbar.barStyle = element.appearance.toolbarStyle; - toolbar.translucent = element.appearance.toolbarTranslucent; - _textField.inputAccessoryView = toolbar; - } - - - [self updatePrevNextStatus]; - -} - -- (void)layoutSubviews { - [super layoutSubviews]; - [self recalculateEntryFieldPosition]; -} - - --(void)recalculateEntryFieldPosition { - _entryElement.parentSection.entryPosition = CGRectZero; - CGRect textFieldFrame = [self calculateFrameForEntryElement]; - CGRect labelFrame = self.textLabel.frame; - self.textLabel.frame = CGRectMake(labelFrame.origin.x, labelFrame.origin.y, - textFieldFrame.origin.x - labelFrame.origin.x, labelFrame.size.height); - _textField.frame = CGRectMake(textFieldFrame.origin.x, textFieldFrame.origin.y, self.contentView.bounds.size.width - textFieldFrame.origin.x - 20, textFieldFrame.size.height); - -} - -- (void)prepareForReuse { - _quickformTableView = nil; - _entryElement = nil; -} - -- (void)textFieldEditingChanged:(UITextField *)textFieldEditingChanged { - _entryElement.textValue = _textField.text; - - [_entryElement 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){ - [_quickformTableView scrollToRowAtIndexPath:[_entryElement getIndexPath] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; - }); - - - if (_textField.returnKeyType == UIReturnKeyDefault) { - UIReturnKeyType returnType = ([_entryElement.parentSection.rootElement findElementToFocusOnAfter:_entryElement]!=nil) ? UIReturnKeyNext : UIReturnKeyDone; - _textField.returnKeyType = returnType; - } - - if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryDidBeginEditingElement:andCell:)]){ - [_entryElement.delegate QEntryDidBeginEditingElement:_entryElement andCell:self]; - } -} - -- (void)textFieldDidEndEditing:(UITextField *)textField { - _entryElement.textValue = _textField.text; - - if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryDidEndEditingElement:andCell:)]){ - [_entryElement.delegate QEntryDidEndEditingElement:_entryElement andCell:self]; - } - - [_entryElement 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 != _entryElement.maxLength && textField.text.length >= _entryElement.maxLength) { - return NO; - } - } - - if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryShouldChangeCharactersInRange:withString:forElement:andCell:)]){ - return [_entryElement.delegate QEntryShouldChangeCharactersInRange:range withString:string forElement:_entryElement andCell:self]; - } - return YES; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - - QEntryElement *element = [_entryElement.parentSection.rootElement findElementToFocusOnAfter:_entryElement]; - if (element!=nil){ - UITableViewCell *cell = [_quickformTableView cellForElement:element]; - if (cell!=nil){ - [cell becomeFirstResponder]; - } - } else { - [_textField resignFirstResponder]; - } - - if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryShouldReturnForElement:andCell:)]){ - return [_entryElement.delegate QEntryShouldReturnForElement:_entryElement andCell:self]; - } - - return YES; -} - -- (void)handleActionBarPreviousNext:(UISegmentedControl *)control { - - QEntryElement *element; - - const BOOL isNext = control.selectedSegmentIndex == 1; - if (isNext) { - element = [_entryElement.parentSection.rootElement findElementToFocusOnAfter:_entryElement]; - } else { - element = [_entryElement.parentSection.rootElement findElementToFocusOnBefore:_entryElement]; - } - - if (element != nil) { - - UITableViewCell *cell = [_quickformTableView cellForElement:element]; - if (cell != nil) { - [cell becomeFirstResponder]; - } - else { - - [_quickformTableView scrollToRowAtIndexPath:[element getIndexPath] - atScrollPosition:UITableViewScrollPositionMiddle - animated:YES]; - - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC); - dispatch_after(popTime, dispatch_get_main_queue(), ^{ - UITableViewCell *c = [_quickformTableView cellForElement:element]; - if (c != nil) { - [c becomeFirstResponder]; - } - }); - } - } - - if (_entryElement.keepSelected) { - [_quickformTableView deselectRowAtIndexPath:[_entryElement getIndexPath] animated:YES]; - } - - [control setSelectedSegmentIndex:UISegmentedControlNoSegment]; -} - -- (BOOL)handleActionBarDone:(UIBarButtonItem *)doneButton { - [self endEditing:YES]; - [self endEditing:NO]; - [_textField resignFirstResponder]; - [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; - - if(_entryElement && _entryElement.delegate && [_entryElement.delegate respondsToSelector:@selector(QEntryMustReturnForElement:andCell:)]){ - [_entryElement.delegate QEntryMustReturnForElement:_entryElement andCell:self]; - } - - return NO; -} - -- (BOOL)becomeFirstResponder { - [_textField becomeFirstResponder]; - return YES; -} - -- (BOOL)resignFirstResponder { - return YES; -} - - -- (void)applyAppearanceForElement:(QElement *)element { - [super applyAppearanceForElement:element]; - - QAppearance *appearance = element.appearance; - _textField.font = appearance.entryFont; - _textField.textColor = element.enabled ? appearance.entryTextColorEnabled : appearance.entryTextColorDisabled; -} - - -@end diff --git a/quickdialog/QFlatAppearance.h b/quickdialog/QFlatAppearance.h deleted file mode 100644 index 3c894447..00000000 --- a/quickdialog/QFlatAppearance.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Created by Eduardo Scoz on 7/18/13. -// -// To change the template use AppCode | Preferences | File Templates. -// - - -#import - - -@interface QFlatAppearance : QAppearance - - -@end diff --git a/quickdialog/QFloatTableViewCell.m b/quickdialog/QFloatTableViewCell.m deleted file mode 100644 index 9bf4b073..00000000 --- a/quickdialog/QFloatTableViewCell.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// QFloatTableViewCell.m -// QuickDialog -// -// Created by Bart Vandendriessche on 29/04/13. -// -// - -#import "QFloatTableViewCell.h" - -@interface QFloatTableViewCell () - -@property (nonatomic, strong, readwrite) UISlider *slider; - -@end - -@implementation QFloatTableViewCell - -- (id)initWithFrame:(CGRect)frame { - self = [super initWithReuseIdentifier:@"QFloatTableViewCell"]; - if (self) { - self.slider = [[UISlider alloc] initWithFrame:CGRectZero]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.slider]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - self.textLabel.frame = CGRectMake(self.textLabel.frame.origin.x, self.textLabel.frame.origin.y, [self.textLabel.text sizeWithFont:self.textLabel.font].width, self.textLabel.frame.size.height); - - CGFloat width = self.textLabel.frame.origin.x + self.textLabel.frame.size.width; - - CGRect remainder, slice; - CGRectDivide(self.contentView.bounds, &slice, &remainder, width, CGRectMinXEdge); - CGFloat standardiOSMargin = 10; - self.slider.frame = CGRectInset(remainder, standardiOSMargin, 0); -} - -@end diff --git a/quickdialog/QRootBuilder.m b/quickdialog/QRootBuilder.m deleted file mode 100644 index 4e318ac8..00000000 --- a/quickdialog/QRootBuilder.m +++ /dev/null @@ -1,244 +0,0 @@ -// -// 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 objectForKey:propertyName]!=nil) { - [target setValue:[[QRootBuilderStringToTypeConversionDict objectForKey: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 replaceObjectAtIndex:i withObject: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 = [[NSDictionary alloc] initWithObjectsAndKeys: - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:QPresentationModeNormal], @"Normal", - [NSNumber numberWithInt:QPresentationModeNavigationInPopover], @"NavigationInPopover", - [NSNumber numberWithInt:QPresentationModeModalForm], @"ModalForm", - [NSNumber numberWithInt:QPresentationModePopover], @"Popover", - [NSNumber numberWithInt:QPresentationModeModalFullScreen], @"ModalFullScreen", - [NSNumber numberWithInt:QPresentationModeModalPage], @"ModalPage", - nil], @"presentationMode", - - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UITextAutocapitalizationTypeNone], @"None", - [NSNumber numberWithInt:UITextAutocapitalizationTypeWords], @"Words", - [NSNumber numberWithInt:UITextAutocapitalizationTypeSentences], @"Sentences", - [NSNumber numberWithInt:UITextAutocapitalizationTypeAllCharacters], @"AllCharacters", - nil], @"autocapitalizationType", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UITextAutocorrectionTypeDefault], @"Default", - [NSNumber numberWithInt:UITextAutocorrectionTypeNo], @"No", - [NSNumber numberWithInt:UITextAutocorrectionTypeYes], @"Yes", - nil], @"autocorrectionType", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UITableViewCellStyleDefault], @"Default", - [NSNumber numberWithInt:UITableViewCellStyleSubtitle], @"Subtitle", - [NSNumber numberWithInt:UITableViewCellStyleValue2], @"Value2", - [NSNumber numberWithInt:UITableViewCellStyleValue1], @"Value1", - nil], @"cellStyle", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UIKeyboardTypeDefault], @"Default", - [NSNumber numberWithInt:UIKeyboardTypeASCIICapable], @"ASCIICapable", - [NSNumber numberWithInt:UIKeyboardTypeNumbersAndPunctuation], @"NumbersAndPunctuation", - [NSNumber numberWithInt:UIKeyboardTypeURL], @"URL", - [NSNumber numberWithInt:UIKeyboardTypeNumberPad], @"NumberPad", - [NSNumber numberWithInt:UIKeyboardTypePhonePad], @"PhonePad", - [NSNumber numberWithInt:UIKeyboardTypeNamePhonePad], @"NamePhonePad", - [NSNumber numberWithInt:UIKeyboardTypeEmailAddress], @"EmailAddress", - [NSNumber numberWithInt:UIKeyboardTypeDecimalPad], @"DecimalPad", - [NSNumber numberWithInt:UIKeyboardTypeTwitter], @"Twitter", - [NSNumber numberWithInt:UIKeyboardTypeAlphabet], @"Alphabet", - nil], @"keyboardType", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UIKeyboardAppearanceDefault], @"Default", - [NSNumber numberWithInt:UIKeyboardAppearanceAlert], @"Alert", - nil], @"keyboardAppearance", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UIActivityIndicatorViewStyleGray], @"Gray", - [NSNumber numberWithInt:UIActivityIndicatorViewStyleWhite], @"White", - [NSNumber numberWithInt:UIActivityIndicatorViewStyleWhiteLarge], @"WhiteLarge", - nil], @"indicatorViewStyle", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UITableViewCellAccessoryDetailDisclosureButton], @"DetailDisclosureButton", - [NSNumber numberWithInt:UITableViewCellAccessoryCheckmark], @"Checkmark", - [NSNumber numberWithInt:UITableViewCellAccessoryDisclosureIndicator], @"DisclosureIndicator", - [NSNumber numberWithInt:UITableViewCellAccessoryNone], @"None", - nil], @"accessoryType", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UIDatePickerModeDate], @"Date", - [NSNumber numberWithInt:UIDatePickerModeTime], @"Time", - [NSNumber numberWithInt:UIDatePickerModeDateAndTime], @"DateAndTime", - nil], @"mode", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UIReturnKeyDefault], @"Default", - [NSNumber numberWithInt:UIReturnKeyGo], @"Go", - [NSNumber numberWithInt:UIReturnKeyGoogle], @"Google", - [NSNumber numberWithInt:UIReturnKeyJoin], @"Join", - [NSNumber numberWithInt:UIReturnKeyNext], @"Next", - [NSNumber numberWithInt:UIReturnKeyRoute], @"Route", - [NSNumber numberWithInt:UIReturnKeySearch], @"Search", - [NSNumber numberWithInt:UIReturnKeySend], @"Send", - [NSNumber numberWithInt:UIReturnKeyYahoo], @"Yahoo", - [NSNumber numberWithInt:UIReturnKeyDone], @"Done", - [NSNumber numberWithInt:UIReturnKeyEmergencyCall], @"EmergencyCall", - nil], @"returnKeyType", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:QLabelingPolicyTrimTitle], @"trimTitle", - [NSNumber numberWithInt:QLabelingPolicyTrimValue], @"trimValue", - nil], @"labelingPolicy", - - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:UIImagePickerControllerSourceTypePhotoLibrary], @"photoLibrary", - [NSNumber numberWithInt:UIImagePickerControllerSourceTypeCamera], @"camera", - [NSNumber numberWithInt:UIImagePickerControllerSourceTypeSavedPhotosAlbum], @"savedPhotosAlbum", - nil], @"source", - - [[NSDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:QLabelingPolicyTrimTitle], @"trimTitle", - [NSNumber numberWithInt:QLabelingPolicyTrimValue], @"trimValue", - nil], @"labelingPolicy", - - nil]; - -} - - -@end diff --git a/quickdialog/QSegmentedElement.h b/quickdialog/QSegmentedElement.h deleted file mode 100644 index a1220a66..00000000 --- a/quickdialog/QSegmentedElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by escoz on 1/15/12. -// - -#import - -#import "QRadioElement.h" - -@interface QSegmentedElement : QRadioElement { - -} -- (QSegmentedElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected; - -- (QSegmentedElement *)initWithItems:(NSArray *)stringArray selected:(NSInteger)selected title:(NSString *)title; - -- (QSegmentedElement *)init; - - -@end diff --git a/quickdialog/QuickDialogController+Helpers.h b/quickdialog/QuickDialogController+Helpers.h deleted file mode 100644 index daa2c367..00000000 --- a/quickdialog/QuickDialogController+Helpers.h +++ /dev/null @@ -1,8 +0,0 @@ -#import - -NSString *QTranslate(NSString *value); -#import "QuickDialogController.h" - -@interface QuickDialogController (Helpers) - -@end diff --git a/quickdialog/QuickDialogController+Loading.m b/quickdialog/QuickDialogController+Loading.m deleted file mode 100644 index a07c6dda..00000000 --- a/quickdialog/QuickDialogController+Loading.m +++ /dev/null @@ -1,66 +0,0 @@ -// -// 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 "QuickDialogController.h" - -@implementation QuickDialogController (Loading) - -- (UIView *)createLoadingView { - - UIView *loading = [[UIView alloc] init]; - loading.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.4]; - loading.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - loading.tag = 1123002; - UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; - [activity startAnimating]; - [activity sizeToFit]; - activity.center = CGPointMake(loading.center.x, loading.frame.size.height/3); - activity.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - - [loading addSubview:activity]; - - [self.quickDialogTableView addSubview:loading]; - [self.quickDialogTableView bringSubviewToFront:loading]; - return loading; -} - - -- (void)loading:(BOOL)visible { - [UIApplication sharedApplication].networkActivityIndicatorVisible = visible; - UIView *loadingView = [self.quickDialogTableView viewWithTag:1123002]; - if (loadingView==nil){ - loadingView = [self createLoadingView]; - } - loadingView.frame = CGRectMake(self.quickDialogTableView.contentOffset.x, self.quickDialogTableView.contentOffset.y, self.quickDialogTableView.bounds.size.width, self.quickDialogTableView.bounds.size.height); - self.quickDialogTableView.userInteractionEnabled = !visible; - - if (visible) { - loadingView.hidden = NO; - [self.view bringSubviewToFront:loadingView]; - } - - loadingView.alpha = visible ? 0 : 1; - [UIView animateWithDuration:0.3 - animations:^{ - loadingView.alpha = visible ? 1 : 0; - } - completion: ^(BOOL finished) { - if (!visible) { - loadingView.hidden = YES; - [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; - } - }]; -} -@end diff --git a/quickdialog/QuickDialogWebController.h b/quickdialog/QuickDialogWebController.h deleted file mode 100644 index 42f695bf..00000000 --- a/quickdialog/QuickDialogWebController.h +++ /dev/null @@ -1,11 +0,0 @@ -#import -#import "QuickDialogController.h" - -@interface QuickDialogWebController : QuickDialogController - -@property(nonatomic, strong) NSString * url; - -- (void)reload; - - -@end diff --git a/quickdialog/QuickDialogWebController.m b/quickdialog/QuickDialogWebController.m deleted file mode 100644 index 3087b40d..00000000 --- a/quickdialog/QuickDialogWebController.m +++ /dev/null @@ -1,60 +0,0 @@ -#import "QuickDialogWebController.h" -#import "QuickDialog.h" - -@implementation QuickDialogWebController { - -} - -@synthesize url; - -- (NSURLRequest *)createRequestForUrl { - return [[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:self.url]]; -} - -- (void)presentError:(NSError *)error { - [self.root bindToObject:[NSDictionary dictionary]]; - [self.quickDialogTableView reloadData]; - [[[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; - [self loading:NO]; -} - -- (void)presentResult:(NSData *)data { - NSError *jsonError; - NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; - - if (jsonError==nil){ - [self.root bindToObject:responseDict]; - [self.quickDialogTableView reloadData]; - } - - [self loading:NO]; -} - -- (void)reload { - NSURLRequest *request = [self createRequestForUrl]; - [NSURLConnection sendAsynchronousRequest:request - queue:[NSOperationQueue currentQueue] - completionHandler:^(NSURLResponse *response, NSData *data, NSError *err) { - if (err){ - [self presentError:err]; - return; - } - [self presentResult:data]; - - }]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - if (self.url==nil && [self.root.object isKindOfClass:[NSString class]]) - self.url = (NSString *) self.root.object; - - if (self.url!=nil){ - [self loading:YES]; - [self reload]; - } - -} - - -@end diff --git a/quickdialog/quickform-Prefix.pch b/quickdialog/quickform-Prefix.pch deleted file mode 100644 index 870ba0af..00000000 --- a/quickdialog/quickform-Prefix.pch +++ /dev/null @@ -1,20 +0,0 @@ -// -// 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. -// - -#ifdef __OBJC__ - #import - - #import - -#endif \ No newline at end of file diff --git a/sample/ExampleAppDelegate.m b/sample/ExampleAppDelegate.m deleted file mode 100644 index 6a822f22..00000000 --- a/sample/ExampleAppDelegate.m +++ /dev/null @@ -1,91 +0,0 @@ -// -// 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 - -@synthesize window = _window; -@synthesize viewController = _viewController; - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - QRootElement *root = [SampleDataBuilder create]; - ExampleViewController *quickformController = (ExampleViewController *) [[ExampleViewController alloc] initWithRoot:root]; - UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:quickformController]; - 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]; - - [self runAppearanceTests]; - return YES; -} - -- (void)runAppearanceTests { - /*QAppearance * defaultAppearance = [QElement appearance]; - [defaultAppearance setObject:@"test" forKey:@"test"]; - NSAssert(QElement.appearance!=nil, @"appearance on QElement must not be nil", nil); - NSAssert(QRootElement.appearance!=nil, @"appearance on subclass of QElement must not be nil", nil); - NSAssert([QRootElement appearance] == defaultAppearance, @"appearance by default should be the same in a subclass", nil); - - NSAssert([QElement new].appearance!=nil, @"appearance on object of QElement subclass should be a mutable copy of the default", nil); - NSAssert([QRootElement new].appearance!=nil, @"appearance on object of QElementshould be a mutable copy of the default", nil); - - - NSAssert([QElement new].appearance!=[QRootElement new].appearance, @"instance appearances shouldn't by default be the same, they're different mutable copies", nil); - - NSAssert([[[QElement new].appearance objectForKey:@"test"] isEqualToString:@"test"], @"appearance on object of QElement subclass should be a mutable copy of the default", nil); - NSAssert([[[QRootElement new].appearance objectForKey:@"test"] isEqualToString:@"test"], @"appearance on object of QElementshould be a mutable copy of the default", nil); - - QRootElement.appearance = [QAppearance new]; - NSAssert([[[QElement new].appearance objectForKey:@"test"] isEqualToString:@"test"], @"after changing QRoot, QElement should still have original", nil); - - //NSAssert([QRootElement new].appearance!=QRootElement.appearance, @"appearance on object of QRootElement should be new type", nil); - NSAssert(![[[QRootElement new].appearance objectForKey:@"test"] isEqualToString:@"test"], @"appearance on object of QRootElement should be new type", nil); - - QRootElement.appearance = nil; - NSAssert([[QRootElement.appearance valueForKey:@"test"] isEqualToString:@"test"], @"set to nil should revert to class appearance", nil); - - QElement *element = [QElement new]; - QRootElement *root = [QRootElement new]; - [element.appearance setObject:@"a" forKey:@"test"]; - [root.appearance setObject:@"b" forKey:@"test"]; - - //NSAssert([[element.appearance valueForKey:@"test"] isEqualToString:@"a"], @"value set should stay set", nil); - //NSAssert([[root.appearance valueForKey:@"test"] isEqualToString:@"b"], @"value set should stay set", nil); - - element.appearance = nil; - //NSAssert([[element.appearance valueForKey:@"test"] isEqualToString:@"test"], @"set to nil should revert to class appearance", nil); - - // clear things out - QElement.appearance = nil; - QRootElement.appearance = nil;*/ - -} - -- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { - return NO; -} - - -@end diff --git a/sample/Localizable.strings b/sample/Localizable.strings deleted file mode 100644 index f23d2cc7..00000000 --- a/sample/Localizable.strings +++ /dev/null @@ -1,7 +0,0 @@ -/****************************************************************************/ -/* Localization file */ - - -"Previous" = "Previous"; -"Next" = "Next"; -"Done" = "Done"; diff --git a/sample/PeriodPickerValueParser.h b/sample/PeriodPickerValueParser.h deleted file mode 100644 index 7e3eeec4..00000000 --- a/sample/PeriodPickerValueParser.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// AMPeriodPickerValueParser.h -// AutoMobile -// -// Created by HiveHicks on 11.04.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import -#import "QPickerValueParser.h" - -@interface PeriodPickerValueParser : NSObject - -@property (nonatomic, readonly) NSArray *stringPeriods; - -@end diff --git a/sample/PeriodPickerValueParser.m b/sample/PeriodPickerValueParser.m deleted file mode 100644 index 96a5df04..00000000 --- a/sample/PeriodPickerValueParser.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// AMPeriodPickerValueParser.m -// AutoMobile -// -// Created by HiveHicks on 11.04.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import "PeriodPickerValueParser.h" - -@implementation PeriodPickerValueParser { - NSDictionary *valuesMap; -} - -- (id)init -{ - if (self = [super init]) - { - valuesMap = - [NSDictionary dictionaryWithObjectsAndKeys: - @"daily", [NSNumber numberWithUnsignedInteger:NSDayCalendarUnit], - @"weekly", [NSNumber numberWithUnsignedInteger:NSWeekCalendarUnit], - @"monthly", [NSNumber numberWithUnsignedInteger:NSMonthCalendarUnit], - @"yearly", [NSNumber numberWithUnsignedInteger:NSYearCalendarUnit], nil]; - } - - return self; -} - -- (NSArray *)stringPeriods -{ - return [valuesMap allValues]; -} - -- (id)objectFromComponentsValues:(NSArray *)componentsValues -{ - NSString *stringPeriod = [componentsValues objectAtIndex:0]; - for (NSNumber *calendarUnitWrapper in valuesMap) { - if ([[valuesMap objectForKey:calendarUnitWrapper] isEqualToString:stringPeriod]) { - return calendarUnitWrapper; - } - } - return nil; -} - -- (NSArray *)componentsValuesFromObject:(id)object -{ - return [NSArray arrayWithObject:[valuesMap objectForKey:object]]; -} - -- (NSString *)presentationOfObject:(id)object -{ - return [valuesMap objectForKey:object]; -} - -@end diff --git a/sample/Resources/Default-568h@2x.png b/sample/Resources/Default-568h@2x.png deleted file mode 100644 index 0891b7aa..00000000 Binary files a/sample/Resources/Default-568h@2x.png and /dev/null differ diff --git a/sample/Resources/icon.png b/sample/Resources/icon.png deleted file mode 100644 index d7aedfdd..00000000 Binary files a/sample/Resources/icon.png and /dev/null differ diff --git a/sample/Resources/icon@2x.png b/sample/Resources/icon@2x.png deleted file mode 100644 index 4b676871..00000000 Binary files a/sample/Resources/icon@2x.png and /dev/null differ diff --git a/sample/Resources/iconIpad.png b/sample/Resources/iconIpad.png deleted file mode 100644 index 59cbd7bc..00000000 Binary files a/sample/Resources/iconIpad.png and /dev/null differ diff --git a/sample/Resources/logo.png b/sample/Resources/logo.png deleted file mode 100644 index a0cf7bb8..00000000 Binary files a/sample/Resources/logo.png and /dev/null differ diff --git a/sample/Resources/logo@2x.png b/sample/Resources/logo@2x.png deleted file mode 100644 index 0bd036b9..00000000 Binary files a/sample/Resources/logo@2x.png and /dev/null differ diff --git a/sample/Resources/logoLarge.png b/sample/Resources/logoLarge.png deleted file mode 100644 index 9b9acfab..00000000 Binary files a/sample/Resources/logoLarge.png and /dev/null differ diff --git a/sample/icon.png b/sample/icon.png deleted file mode 100644 index d7aedfdd..00000000 Binary files a/sample/icon.png and /dev/null differ diff --git a/sample/icon@2x.png b/sample/icon@2x.png deleted file mode 100644 index 4b676871..00000000 Binary files a/sample/icon@2x.png and /dev/null differ diff --git a/sample/iconIpad.png b/sample/iconIpad.png deleted file mode 100644 index 59cbd7bc..00000000 Binary files a/sample/iconIpad.png and /dev/null differ diff --git a/sample/main.m b/sample/main.m deleted file mode 100644 index 46a55b02..00000000 --- a/sample/main.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// 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 "ExampleAppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([ExampleAppDelegate class])); - } -} diff --git a/sample/quickdialogexample-Info.plist b/sample/quickdialogexample-Info.plist deleted file mode 100644 index 0186fbc0..00000000 --- a/sample/quickdialogexample-Info.plist +++ /dev/null @@ -1,64 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - QuickDialog - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFiles - - icon.png - icon@2x.png - iconIpad.png - - CFBundleIcons - - CFBundlePrimaryIcon - - CFBundleIconFiles - - icon.png - icon@2x.png - iconIpad.png - - UIPrerenderedIcon - - - - CFBundleIdentifier - com.escoz.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - UIPrerenderedIcon - - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/sample/quickdialogexample-Prefix.pch b/sample/quickdialogexample-Prefix.pch deleted file mode 100644 index f679aa6f..00000000 --- a/sample/quickdialogexample-Prefix.pch +++ /dev/null @@ -1,13 +0,0 @@ -// -// Prefix header for all source files of the 'sample' target in the 'sample' project -// - -#ifdef __OBJC__ - -#import -#import "QuickDialog.h" -#import "ExampleAppDelegate.h" - - - -#endif