diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index 8b84d01f5..7eec97b7a 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -17,12 +17,19 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef UILINPHONE_H -#define UILINPHONE_H - +#import #define LINPHONE_MAIN_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] #define LINPHONE_TABLE_CELL_BACKGROUND_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] +@interface UIColor (LightAndDark) -#endif +- (UIColor *)adjustHue:(float)hm saturation:(float)sm brightness:(float)bm alpha:(float)am; + +- (UIColor *)multColor:(float)mult; + +- (UIColor *)lighterColor; + +- (UIColor *)darkerColor; + +@end \ No newline at end of file diff --git a/Classes/LinphoneUI/UILinphone.m b/Classes/LinphoneUI/UILinphone.m new file mode 100644 index 000000000..0c151bf99 --- /dev/null +++ b/Classes/LinphoneUI/UILinphone.m @@ -0,0 +1,52 @@ +/* UILinphone.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UILinphone.h" + +@implementation UIColor (LightAndDark) + +- (UIColor *)multColor:(float)mult { + float h, s, b, a; + if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) + return [UIColor colorWithHue:h + saturation:s + brightness:MIN(MAX(b * mult, 0.0), 1.0) + alpha:a]; + return nil; +} + +- (UIColor *)adjustHue:(float)hm saturation:(float)sm brightness:(float)bm alpha:(float)am { + float h, s, b, a; + if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) + return [UIColor colorWithHue:MIN(MAX(h + hm, 0.0), 1.0) + saturation:MIN(MAX(s + sm, 0.0), 1.0) + brightness:MIN(MAX(b + bm, 0.0), 1.0) + alpha:MIN(MAX(a + am, 0.0), 1.0)]; + return nil; +} + +- (UIColor *)lighterColor { + return [self multColor:1.3]; +} + +- (UIColor *)darkerColor { + return [self multColor:0.75]; +} + +@end \ No newline at end of file diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 6aa413b11..8580eec38 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -20,16 +20,134 @@ #import "SettingsViewController.h" #import "LinphoneManager.h" #import "UILinphone.h" +#import "UACellBackgroundView.h" -static void removeTableBackground(UIView* view) { - if([view isKindOfClass:[UITableView class]]) { - [view setBackgroundColor:[UIColor clearColor]]; - } - for(UIView *subview in [view subviews]) { - removeTableBackground(subview); - } +#import "DCRoundSwitch.h" + +#import "IASKSpecifierValuesViewController.h" +#import "IASKPSTextFieldSpecifierViewCell.h" +#import "IASKSpecifier.h" +#import "IASKTextField.h" + + +#pragma mark - IASKSwitchEx Class + +@interface IASKSwitchEx : DCRoundSwitch { + NSString *_key; } +@property (nonatomic, retain) NSString *key; + +@end + +@implementation IASKSwitchEx + +@synthesize key=_key; + +- (void)dealloc { + [_key release], _key = nil; + + [super dealloc]; +} + +@end + + +#pragma mark - IASKSpecifierValuesViewControllerEx Class + +// Patch IASKSpecifierValuesViewController +@interface IASKSpecifierValuesViewControllerEx: IASKSpecifierValuesViewController + +@end + +@implementation IASKSpecifierValuesViewControllerEx + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; + return cell; +} + +@end + + +#pragma mark - IASKAppSettingsViewControllerEx Class + +@interface IASKAppSettingsViewController(PrivateInterface) +- (UITableViewCell*)newCellForIdentifier:(NSString*)identifier; +@end; + +@interface IASKAppSettingsViewControllerEx : IASKAppSettingsViewController + +@end + +@implementation IASKAppSettingsViewControllerEx + +- (UITableViewCell*)newCellForIdentifier:(NSString*)identifier { + UITableViewCell *cell = nil; + if ([identifier isEqualToString:kIASKPSToggleSwitchSpecifier]) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kIASKPSToggleSwitchSpecifier]; + cell.accessoryView = [[[IASKSwitchEx alloc] initWithFrame:CGRectMake(0, 0, 79, 27)] autorelease]; + [((IASKSwitchEx*)cell.accessoryView) addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged]; + [((IASKSwitchEx*)cell.accessoryView) setOnTintColor:LINPHONE_MAIN_COLOR]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + } else { + cell = [super newCellForIdentifier:identifier]; + } + return cell; +} + +- (void)initIASKAppSettingsViewControllerEx { + // Force kIASKSpecifierValuesViewControllerIndex + static int kIASKSpecifierValuesViewControllerIndex = 0; + _viewList = [[NSMutableArray alloc] init]; + [_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKSpecifierValuesView", @"ViewName",nil]]; + [_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKAppSettingsView", @"ViewName",nil]]; + + NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3]; + [newItemDict addEntriesFromDictionary: [_viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex]]; // copy the title and explain strings + + IASKSpecifierValuesViewController *targetViewController = [[IASKSpecifierValuesViewControllerEx alloc] init]; + // add the new view controller to the dictionary and then to the 'viewList' array + [newItemDict setObject:targetViewController forKey:@"viewController"]; + [_viewList replaceObjectAtIndex:kIASKSpecifierValuesViewControllerIndex withObject:newItemDict]; + [targetViewController release]; +} + +- (id)initWithStyle:(UITableViewStyle)style { + self = [super initWithStyle:style]; + if(self != nil) { + [self initIASKAppSettingsViewControllerEx]; + } + return self; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; + + if([cell isKindOfClass:[IASKPSTextFieldSpecifierViewCell class]]) { + UITextField *field = ((IASKPSTextFieldSpecifierViewCell*)cell).textField; + [field setTextColor:LINPHONE_MAIN_COLOR]; + } + + cell.detailTextLabel.textColor = LINPHONE_MAIN_COLOR; + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; + return cell; +} + +@end + + +#pragma mark - UINavigationBarEx Class + @interface UINavigationBarEx: UINavigationBar { } @@ -41,7 +159,7 @@ static void removeTableBackground(UIView* view) { #pragma mark - Lifecycle Functions - (void)initUINavigationBarEx { - [self setTintColor:LINPHONE_MAIN_COLOR]; + [self setTintColor:[LINPHONE_MAIN_COLOR adjustHue:5.0f/180.0f saturation:0.0f brightness:0.0f alpha:0.0f]]; } - (id)init { @@ -75,20 +193,33 @@ static void removeTableBackground(UIView* view) { @end + +#pragma mark - UINavigationControllerEx Class + @interface UINavigationControllerEx : UINavigationController @end @implementation UINavigationControllerEx ++ (void)removeTableBackground:(UIView*)view { + if([view isKindOfClass:[UITableView class]]) { + [view setBackgroundColor:[UIColor clearColor]]; + } + for(UIView *subview in [view subviews]) { + [UINavigationControllerEx removeTableBackground:subview]; + } +} + - (id)initWithRootViewController:(UIViewController *)rootViewController { - removeTableBackground(rootViewController.view); + [UINavigationControllerEx removeTableBackground:rootViewController.view]; return [super initWithRootViewController:rootViewController]; } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - removeTableBackground(viewController.view); + [UINavigationControllerEx removeTableBackground:viewController.view]; + [viewController viewWillAppear:FALSE]; // Force load: Load Title UILabel *labelTitleView = [[UILabel alloc] init]; labelTitleView.backgroundColor = [UIColor clearColor]; labelTitleView.textColor = [UIColor colorWithRed:0x41/255.0f green:0x48/255.0f blue:0x4f/255.0f alpha:1.0]; @@ -96,7 +227,7 @@ static void removeTableBackground(UIView* view) { labelTitleView.font = [UIFont boldSystemFontOfSize:20]; labelTitleView.shadowOffset = CGSizeMake(0,1); labelTitleView.textAlignment = UITextAlignmentCenter; - labelTitleView.text = viewController.navigationItem.title; + labelTitleView.text = viewController.title; [labelTitleView sizeToFit]; viewController.navigationItem.titleView = labelTitleView; @@ -105,20 +236,21 @@ static void removeTableBackground(UIView* view) { - (void)setViewControllers:(NSArray *)viewControllers { for(UIViewController *controller in viewControllers) { - removeTableBackground(controller.view); + [UINavigationControllerEx removeTableBackground:controller.view]; } [super setViewControllers:viewControllers]; } - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated { for(UIViewController *controller in viewControllers) { - removeTableBackground(controller.view); + [UINavigationControllerEx removeTableBackground:controller.view]; } [super setViewControllers:viewControllers animated:animated]; } @end + @implementation SettingsViewController @synthesize settingsController; @@ -170,7 +302,6 @@ static UICompositeViewDescription *compositeDescription = nil; settingsController.settingsStore = [[LinphoneManager instance] settingsStore]; navigationController.view.frame = self.view.frame; - removeTableBackground(navigationController.view); [navigationController pushViewController:settingsController animated:FALSE]; [self.view addSubview: navigationController.view]; } diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index 9c69905bb..f4b4552a1 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -51,7 +51,7 @@ NO - Settings + IBCocoaTouchFramework @@ -81,7 +81,7 @@ YES IBCocoaTouchFramework - + @@ -115,7 +115,7 @@ 0 - + @@ -179,7 +179,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKAppSettingsViewController + IASKAppSettingsViewControllerEx com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -209,6 +209,14 @@ ./Classes/IASKAppSettingsViewController.h + + IASKAppSettingsViewControllerEx + IASKAppSettingsViewController + + IBProjectSource + ./Classes/IASKAppSettingsViewControllerEx.h + + SettingsViewController UIViewController diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitch.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.h new file mode 100755 index 000000000..dd693de9e --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.h @@ -0,0 +1,33 @@ +// +// DCRoundSwitch.h +// +// Created by Patrick Richards on 28/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import +#import + +@class DCRoundSwitchToggleLayer; +@class DCRoundSwitchOutlineLayer; +@class DCRoundSwitchKnobLayer; + +@interface DCRoundSwitch : UIControl + +@property (nonatomic, retain) UIColor *onTintColor; // default: blue (matches normal UISwitch) +@property (nonatomic, getter=isOn) BOOL on; // default: NO +@property (nonatomic, copy) NSString *onText; // default: 'ON' - automatically localized +@property (nonatomic, copy) NSString *offText; // default: 'OFF' - automatically localized + ++ (Class)knobLayerClass; ++ (Class)outlineLayerClass; ++ (Class)toggleLayerClass; + +- (void)setOn:(BOOL)newOn animated:(BOOL)animated; +- (void)setOn:(BOOL)newOn animated:(BOOL)animated ignoreControlEvents:(BOOL)ignoreControlEvents; + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitch.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.m new file mode 100755 index 000000000..8e0549b27 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.m @@ -0,0 +1,468 @@ +// +// DCRoundSwitch.m +// +// Created by Patrick Richards on 28/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitch.h" +#import "DCRoundSwitchToggleLayer.h" +#import "DCRoundSwitchOutlineLayer.h" +#import "DCRoundSwitchKnobLayer.h" + +@interface DCRoundSwitch () + +@property (nonatomic, retain) DCRoundSwitchOutlineLayer *outlineLayer; +@property (nonatomic, retain) DCRoundSwitchToggleLayer *toggleLayer; +@property (nonatomic, retain) DCRoundSwitchKnobLayer *knobLayer; +@property (nonatomic, retain) CAShapeLayer *clipLayer; +@property (nonatomic, assign) BOOL ignoreTap; + +- (void)setup; +- (void)useLayerMasking; +- (void)removeLayerMask; +- (void)positionLayersAndMask; + +@end + +@implementation DCRoundSwitch +@synthesize outlineLayer, toggleLayer, knobLayer, clipLayer, ignoreTap; +@synthesize on, onText, offText; +@synthesize onTintColor; + +#pragma mark - +#pragma mark Init & Memory Managment + +- (void)dealloc +{ + [outlineLayer release]; + [toggleLayer release]; + [knobLayer release]; + [clipLayer release]; + + [onTintColor release]; + [onText release]; + [offText release]; + + [super dealloc]; +} + +- (id)init +{ + if ((self = [super init])) + { + self.frame = CGRectMake(0, 0, 77, 27); + [self setup]; + } + + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if ((self = [super initWithCoder:aDecoder])) + { + [self setup]; + } + + return self; +} + +- (id)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) + { + [self setup]; + } + + return self; +} + ++ (Class)knobLayerClass { + return [DCRoundSwitchKnobLayer class]; +} + ++ (Class)outlineLayerClass { + return [DCRoundSwitchOutlineLayer class]; +} + ++ (Class)toggleLayerClass { + return [DCRoundSwitchToggleLayer class]; +} + +- (void)setup +{ + // this way you can set the background color to black or something similar so it can be seen in IB + self.backgroundColor = [UIColor clearColor]; + + // remove the flexible width/height autoresizing masks if they have been set + UIViewAutoresizing mask = (int)self.autoresizingMask; + if (mask & UIViewAutoresizingFlexibleHeight) + self.autoresizingMask ^= UIViewAutoresizingFlexibleHeight; + + if (mask & UIViewAutoresizingFlexibleWidth) + self.autoresizingMask ^= UIViewAutoresizingFlexibleWidth; + + // setup default texts + NSBundle *uiKitBundle = [NSBundle bundleWithIdentifier:@"com.apple.UIKit"]; + self.onText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"ON" value:nil table:nil] : @"ON"; + self.offText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"OFF" value:nil table:nil] : @"OFF"; + + // the switch has three layers, (ordered from bottom to top): + // + // * toggleLayer * (bottom of the layer stack) + // this layer contains the onTintColor (blue by default), the text, and the shadown for the knob. the knob shadow is + // on this layer because it needs to go under the outlineLayer so it doesn't bleed out over the edge of the control. + // this layer moves when the switch moves + + // * outlineLayer * (middle of the layer stack) + // this is the outline of the control, it's inner shadow, and the inner gloss. the inner shadow is on this layer + // because it must stay still while the switch animates. the inner gloss is also here because it doesn't move, and also + // because it needs to go uner the knobLayer. + // this layer appears to always stay in the same spot. + + // * knobLayer * (top of the layer stack) + // this is the knob, and sits on top of the layer stack. note that the knob shadow is NOT drawn here, it is drawn on the + // toggleLayer so it doesn't bleed out over the outlineLayer. + + self.toggleLayer = [[[[[self class] toggleLayerClass] alloc] initWithOnString:self.onText offString:self.offText onTintColor:[UIColor colorWithRed:0.000 green:0.478 blue:0.882 alpha:1.0]] autorelease]; + self.toggleLayer.drawOnTint = NO; + self.toggleLayer.clip = YES; + [self.layer addSublayer:self.toggleLayer]; + [self.toggleLayer setNeedsDisplay]; + + self.outlineLayer = [[[self class] outlineLayerClass] layer]; + [self.toggleLayer addSublayer:self.outlineLayer]; + [self.outlineLayer setNeedsDisplay]; + + self.knobLayer = [[[self class] knobLayerClass] layer]; + [self.layer addSublayer:self.knobLayer]; + [self.knobLayer setNeedsDisplay]; + + self.toggleLayer.contentsScale = self.outlineLayer.contentsScale = self.knobLayer.contentsScale = [[UIScreen mainScreen] scale]; + + // tap gesture for toggling the switch + UITapGestureRecognizer *tapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(tapped:)] autorelease]; + [tapGestureRecognizer setDelegate:self]; + [self addGestureRecognizer:tapGestureRecognizer]; + + // pan gesture for moving the switch knob manually + UIPanGestureRecognizer *panGestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self + action:@selector(toggleDragged:)] autorelease]; + [panGestureRecognizer setDelegate:self]; + [self addGestureRecognizer:panGestureRecognizer]; + + [self setNeedsLayout]; + + // setup the layer positions + [self positionLayersAndMask]; +} + +#pragma mark - +#pragma mark Setup Frame/Layout + +- (void)sizeToFit +{ + [super sizeToFit]; + + NSString *onString = self.toggleLayer.onString; + NSString *offString = self.toggleLayer.offString; + + CGFloat width = [onString sizeWithFont:self.toggleLayer.labelFont].width; + CGFloat offWidth = [offString sizeWithFont:self.toggleLayer.labelFont].width; + + if(offWidth > width) + width = offWidth; + + width += self.toggleLayer.bounds.size.width * 2.;//add 2x the knob for padding + + CGRect newFrame = self.frame; + CGFloat currentWidth = newFrame.size.width; + newFrame.size.width = width; + newFrame.origin.x += currentWidth - width; + self.frame = newFrame; + + //old values for sizeToFit; keep these around for reference +// newFrame.size.width = 77.0; +// newFrame.size.height = 27.0; +} + +- (void)useLayerMasking +{ + // turn of the manual clipping (done in toggleLayer's drawInContext:) + self.toggleLayer.clip = NO; + self.toggleLayer.drawOnTint = YES; + [self.toggleLayer setNeedsDisplay]; + + // create the layer mask and add that to the toggleLayer + self.clipLayer = [CAShapeLayer layer]; + UIBezierPath *clipPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds + cornerRadius:self.bounds.size.height / 2.0]; + self.clipLayer.path = clipPath.CGPath; + self.toggleLayer.mask = self.clipLayer; +} + +- (void)removeLayerMask +{ + // turn off the animations so the user doesn't see the changing of mask/clipping + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + + // remove the layer mask (put on in useLayerMasking) + self.toggleLayer.mask = nil; + + // renable manual clipping (done in toggleLayer's drawInContext:) + self.toggleLayer.clip = YES; + self.toggleLayer.drawOnTint = self.on; + [self.toggleLayer setNeedsDisplay]; +} + +- (void)positionLayersAndMask +{ + // repositions the underlying toggle and the layer mask, plus the knob + self.toggleLayer.mask.position = CGPointMake(-self.toggleLayer.frame.origin.x, 0.0); + self.outlineLayer.frame = CGRectMake(-self.toggleLayer.frame.origin.x, 0, self.bounds.size.width, self.bounds.size.height); + self.knobLayer.frame = CGRectMake(self.toggleLayer.frame.origin.x + self.toggleLayer.frame.size.width / 2.0 - self.knobLayer.frame.size.width / 2.0, + -1, + self.knobLayer.frame.size.width, + self.knobLayer.frame.size.height); +} + +#pragma mark - +#pragma mark Interaction + +- (void)tapped:(UITapGestureRecognizer *)gesture +{ + if (self.ignoreTap) return; + + if (gesture.state == UIGestureRecognizerStateEnded) + [self setOn:!self.on animated:YES]; +} + +- (void)toggleDragged:(UIPanGestureRecognizer *)gesture +{ + CGFloat minToggleX = -self.toggleLayer.frame.size.width / 2.0 + self.toggleLayer.frame.size.height / 2.0; + CGFloat maxToggleX = -1; + + if (gesture.state == UIGestureRecognizerStateBegan) + { + // setup by turning off the manual clipping of the toggleLayer and setting up a layer mask. + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + [self useLayerMasking]; + [self positionLayersAndMask]; + self.knobLayer.gripped = YES; + } + else if (gesture.state == UIGestureRecognizerStateChanged) + { + CGPoint translation = [gesture translationInView:self]; + + // disable the animations before moving the layers + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + + // darken the knob + if (!self.knobLayer.gripped) + self.knobLayer.gripped = YES; + + // move the toggleLayer using the translation of the gesture, keeping it inside the outline. + CGFloat newX = self.toggleLayer.frame.origin.x + translation.x; + if (newX < minToggleX) newX = minToggleX; + if (newX > maxToggleX) newX = maxToggleX; + self.toggleLayer.frame = CGRectMake(newX, + self.toggleLayer.frame.origin.y, + self.toggleLayer.frame.size.width, + self.toggleLayer.frame.size.height); + + // this will re-position the layer mask and knob + [self positionLayersAndMask]; + + [gesture setTranslation:CGPointZero inView:self]; + } + else if (gesture.state == UIGestureRecognizerStateEnded) + { + // flip the switch to on or off depending on which half it ends at + CGFloat toggleCenter = CGRectGetMidX(self.toggleLayer.frame); + [self setOn:(toggleCenter > CGRectGetMidX(self.bounds)) animated:YES]; + } + + // send off the appropriate actions (not fully tested yet) + CGPoint locationOfTouch = [gesture locationInView:self]; + if (CGRectContainsPoint(self.bounds, locationOfTouch)) + [self sendActionsForControlEvents:UIControlEventTouchDragInside]; + else + [self sendActionsForControlEvents:UIControlEventTouchDragOutside]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (self.ignoreTap) return; + + [super touchesBegan:touches withEvent:event]; + + self.knobLayer.gripped = YES; + [self sendActionsForControlEvents:UIControlEventTouchDown]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + + [self sendActionsForControlEvents:UIControlEventTouchUpInside]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + + [self sendActionsForControlEvents:UIControlEventTouchUpOutside]; +} + +#pragma mark UIGestureRecognizerDelegate + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; +{ + return !self.ignoreTap; +} + +#pragma mark Setters/Getters + +- (void)setOn:(BOOL)newOn +{ + [self setOn:newOn animated:NO]; +} + +- (void)setOn:(BOOL)newOn animated:(BOOL)animated +{ + [self setOn:newOn animated:animated ignoreControlEvents:NO]; +} + +- (void)setOn:(BOOL)newOn animated:(BOOL)animated ignoreControlEvents:(BOOL)ignoreControlEvents +{ + BOOL previousOn = self.on; + on = newOn; + self.ignoreTap = YES; + + [CATransaction setAnimationDuration:0.014]; + self.knobLayer.gripped = YES; + + // setup by turning off the manual clipping of the toggleLayer and setting up a layer mask. + [self useLayerMasking]; + [self positionLayersAndMask]; + + // retain all our targets so they don't disappear before the actions get sent at the end of the animation + [[self allTargets] makeObjectsPerformSelector:@selector(retain)]; + + [CATransaction setCompletionBlock:^{ + [CATransaction begin]; + if (!animated) + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + else + [CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions]; + + CGFloat minToggleX = -self.toggleLayer.frame.size.width / 2.0 + self.toggleLayer.frame.size.height / 2.0; + CGFloat maxToggleX = -1; + + + if (self.on) + { + self.toggleLayer.frame = CGRectMake(maxToggleX, + self.toggleLayer.frame.origin.y, + self.toggleLayer.frame.size.width, + self.toggleLayer.frame.size.height); + } + else + { + self.toggleLayer.frame = CGRectMake(minToggleX, + self.toggleLayer.frame.origin.y, + self.toggleLayer.frame.size.width, + self.toggleLayer.frame.size.height); + } + + if (!self.toggleLayer.mask) + { + [self useLayerMasking]; + [self.toggleLayer setNeedsDisplay]; + } + + [self positionLayersAndMask]; + + self.knobLayer.gripped = NO; + + [CATransaction setCompletionBlock:^{ + [self removeLayerMask]; + self.ignoreTap = NO; + + // send the action here so it get's sent at the end of the animations + if (previousOn != on && !ignoreControlEvents) + [self sendActionsForControlEvents:UIControlEventValueChanged]; + + [[self allTargets] makeObjectsPerformSelector:@selector(release)]; + }]; + + [CATransaction commit]; + }]; +} + +- (void)setOnTintColor:(UIColor *)anOnTintColor +{ + if (anOnTintColor != onTintColor) + { + [onTintColor release]; + onTintColor = [anOnTintColor retain]; + self.toggleLayer.onTintColor = anOnTintColor; + [self.toggleLayer setNeedsDisplay]; + } +} + +- (void)layoutSubviews; +{ + CGFloat knobRadius = self.bounds.size.height + 2.0; + self.knobLayer.frame = CGRectMake(0, 0, knobRadius, knobRadius); + CGSize toggleSize = CGSizeMake(self.bounds.size.width * 2 - (knobRadius - 4), self.bounds.size.height); + CGFloat minToggleX = -toggleSize.width / 2.0 + knobRadius / 2.0 - 1; + CGFloat maxToggleX = -1; + + if (self.on) + { + self.toggleLayer.frame = CGRectMake(maxToggleX, + self.toggleLayer.frame.origin.y, + toggleSize.width, + toggleSize.height); + } + else + { + self.toggleLayer.frame = CGRectMake(minToggleX, + self.toggleLayer.frame.origin.y, + toggleSize.width, + toggleSize.height); + } + + [self positionLayersAndMask]; +} + +- (void)setOnText:(NSString *)newOnText +{ + if (newOnText != onText) + { + [onText release]; + onText = [newOnText copy]; + self.toggleLayer.onString = onText; + [self.toggleLayer setNeedsDisplay]; + } +} + +- (void)setOffText:(NSString *)newOffText +{ + if (newOffText != offText) + { + [offText release]; + offText = [newOffText copy]; + self.toggleLayer.offString = offText; + [self.toggleLayer setNeedsDisplay]; + } +} + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h new file mode 100755 index 000000000..55141f72e --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h @@ -0,0 +1,18 @@ +// +// DCRoundSwitchKnobLayer.h +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import + +@interface DCRoundSwitchKnobLayer : CALayer + +@property (nonatomic) BOOL gripped; + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m new file mode 100755 index 000000000..d64f2f468 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m @@ -0,0 +1,69 @@ +// +// DCRoundSwitchKnobLayer.m +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitchKnobLayer.h" + +CGGradientRef CreateGradientRefWithColors(CGColorSpaceRef colorSpace, CGColorRef startColor, CGColorRef endColor); + +@implementation DCRoundSwitchKnobLayer +@synthesize gripped; + +- (void)drawInContext:(CGContextRef)context +{ + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); + CGRect knobRect = CGRectInset(self.bounds, 2, 2); + CGFloat knobRadius = self.bounds.size.height - 2; + + // knob outline (shadow is drawn in the toggle layer) + CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0.62 alpha:1.0].CGColor); + CGContextSetLineWidth(context, 1.5); + CGContextStrokeEllipseInRect(context, knobRect); + CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 0, NULL); + + // knob inner gradient + CGContextAddEllipseInRect(context, knobRect); + CGContextClip(context); + CGColorRef knobStartColor = [UIColor colorWithWhite:0.82 alpha:1.0].CGColor; + CGColorRef knobEndColor = (self.gripped) ? [UIColor colorWithWhite:0.894 alpha:1.0].CGColor : [UIColor colorWithWhite:0.996 alpha:1.0].CGColor; + CGPoint topPoint = CGPointMake(0, 0); + CGPoint bottomPoint = CGPointMake(0, knobRadius + 2); + CGGradientRef knobGradient = CreateGradientRefWithColors(colorSpace, knobStartColor, knobEndColor); + CGContextDrawLinearGradient(context, knobGradient, topPoint, bottomPoint, 0); + CGGradientRelease(knobGradient); + + // knob inner highlight + CGContextAddEllipseInRect(context, CGRectInset(knobRect, 0.5, 0.5)); + CGContextAddEllipseInRect(context, CGRectInset(knobRect, 1.5, 1.5)); + CGContextEOClip(context); + CGGradientRef knobHighlightGradient = CreateGradientRefWithColors(colorSpace, [UIColor whiteColor].CGColor, [UIColor colorWithWhite:1.0 alpha:0.5].CGColor); + CGContextDrawLinearGradient(context, knobHighlightGradient, topPoint, bottomPoint, 0); + CGGradientRelease(knobHighlightGradient); + + CGColorSpaceRelease(colorSpace); +} + +CGGradientRef CreateGradientRefWithColors(CGColorSpaceRef colorSpace, CGColorRef startColor, CGColorRef endColor) +{ + CGFloat colorStops[2] = {0.0, 1.0}; + CGColorRef colors[] = {startColor, endColor}; + CFArrayRef colorsArray = CFArrayCreate(NULL, (const void**)colors, sizeof(colors) / sizeof(CGColorRef), &kCFTypeArrayCallBacks); + CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, colorsArray, colorStops); + CFRelease(colorsArray); + return gradient; +} + +- (void)setGripped:(BOOL)newGripped +{ + gripped = newGripped; + [self setNeedsDisplay]; +} + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h new file mode 100755 index 000000000..e9e82bf3f --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h @@ -0,0 +1,16 @@ +// +// DCRoundSwitchOutlineLayer.h +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import + +@interface DCRoundSwitchOutlineLayer : CALayer + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m new file mode 100755 index 000000000..4cbb658e6 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m @@ -0,0 +1,66 @@ +// +// DCRoundSwitchOutlineLayer.m +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitchOutlineLayer.h" + +@implementation DCRoundSwitchOutlineLayer + +- (void)drawInContext:(CGContextRef)context +{ + // calculate the outline clip + CGContextSaveGState(context); + UIBezierPath *switchOutline = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.bounds.size.height / 2.0]; + CGContextAddPath(context, switchOutline.CGPath); + CGContextClip(context); + + // inner gloss + CGContextSaveGState(context); + CGRect innerGlossPathRect = CGRectMake(self.frame.size.width * 0.05, + self.frame.size.height / 2.0, + self.bounds.size.width - (self.frame.size.width * 0.1), + self.bounds.size.height / 2.0); + UIBezierPath *innerGlossPath = [UIBezierPath bezierPathWithRoundedRect:innerGlossPathRect + byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight + cornerRadii:CGSizeMake(self.bounds.size.height * 0.3, self.bounds.size.height * 0.3)]; + CGContextAddPath(context, innerGlossPath.CGPath); + CGContextClip(context); + + CGFloat colorStops[2] = {0.0, 1.0}; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGFloat innerGlossStartColorComponents[] = {1.0, 1.0, 1.0, 0.14}; + CGFloat innerGlossEndColorComponents[] = {1.0, 1.0, 1.0, 0.50}; + CGColorRef topColor = CGColorCreate(colorSpace, innerGlossStartColorComponents); + CGColorRef bottomColor = CGColorCreate(colorSpace, innerGlossEndColorComponents); + CGColorRef colors[] = { topColor, bottomColor }; + CFArrayRef colorsArray = CFArrayCreate(NULL, (const void**)colors, sizeof(colors) / sizeof(CGColorRef), &kCFTypeArrayCallBacks); + CGGradientRef innerGlossGradient = CGGradientCreateWithColors(colorSpace, colorsArray, colorStops); + CFRelease(colorsArray); + + CGContextDrawLinearGradient(context, innerGlossGradient, CGPointMake(0, CGRectGetMinY(innerGlossPathRect)), CGPointMake(0, CGRectGetMaxY(innerGlossPathRect)), 0); + CGContextRestoreGState(context); + CGColorSpaceRelease(colorSpace); + CGColorRelease(topColor); + CGColorRelease(bottomColor); + CGGradientRelease(innerGlossGradient); + + // outline and inner shadow + CGContextSetShadowWithColor(context, CGSizeMake(0.0, 1), 2.0, [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1.0].CGColor); + CGContextSetLineWidth(context, 0.5); + UIBezierPath *outlinePath = [UIBezierPath bezierPathWithRoundedRect:CGRectOffset(self.bounds, -0.5, 0.0) cornerRadius:self.bounds.size.height / 2.0]; + CGContextAddPath(context, outlinePath.CGPath); + CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0.60 alpha:1.0].CGColor); + CGContextStrokePath(context); + + CGContextAddPath(context, outlinePath.CGPath); + CGContextStrokePath(context); +} + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h new file mode 100755 index 000000000..e56c631b9 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h @@ -0,0 +1,26 @@ +// +// DCRoundSwitchToggleLayer.h +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import +#import + +@interface DCRoundSwitchToggleLayer : CALayer + +@property (nonatomic, retain) UIColor *onTintColor; +@property (nonatomic, retain) NSString *onString; +@property (nonatomic, retain) NSString *offString; +@property (nonatomic, readonly) UIFont *labelFont; +@property (nonatomic) BOOL drawOnTint; +@property (nonatomic) BOOL clip; + +- (id)initWithOnString:(NSString *)anOnString offString:(NSString *)anOffString onTintColor:(UIColor *)anOnTintColor; + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m new file mode 100755 index 000000000..99e0550bf --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m @@ -0,0 +1,102 @@ +// +// DCRoundSwitchToggleLayer.m +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitchToggleLayer.h" + +@implementation DCRoundSwitchToggleLayer +@synthesize onString, offString, onTintColor; +@synthesize drawOnTint; +@synthesize clip; +@synthesize labelFont; + +- (void)dealloc +{ + [onString release]; + [offString release]; + [onTintColor release]; + + [super dealloc]; +} + +- (id)initWithOnString:(NSString *)anOnString offString:(NSString *)anOffString onTintColor:(UIColor *)anOnTintColor +{ + if ((self = [super init])) + { + self.onString = anOnString; + self.offString = anOffString; + self.onTintColor = anOnTintColor; + } + + return self; +} + +- (UIFont *)labelFont +{ + return [UIFont boldSystemFontOfSize:ceilf(self.bounds.size.height * .6)]; +} + +- (void)drawInContext:(CGContextRef)context +{ + CGFloat knobRadius = self.bounds.size.height - 2.0; + CGFloat knobCenter = self.bounds.size.width / 2.0; + CGRect knobRect = CGRectMake(knobCenter - knobRadius / 2.0, 1.0, knobRadius, knobRadius); + + if (self.clip) + { + UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(-self.frame.origin.x + 0.5, 0, self.bounds.size.width / 2.0 + self.bounds.size.height / 2.0 - 1.5, self.bounds.size.height) cornerRadius:self.bounds.size.height / 2.0]; + CGContextAddPath(context, bezierPath.CGPath); + CGContextClip(context); + } + + // on tint color + if (self.drawOnTint) + { + CGContextSetFillColorWithColor(context, self.onTintColor.CGColor); + CGContextFillRect(context, CGRectMake(0, 0, knobCenter, self.bounds.size.height)); + } + + // off tint color (white) + CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:0.963 alpha:1.0].CGColor); + CGContextFillRect(context, CGRectMake(knobCenter, 0, self.bounds.size.width - knobCenter, self.bounds.size.height)); + + // knob shadow + CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 1.5, [UIColor colorWithWhite:0.2 alpha:1.0].CGColor); + CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0.42 alpha:1.0].CGColor); + CGContextSetLineWidth(context, 1.0); + CGContextStrokeEllipseInRect(context, knobRect); + CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 0, NULL); + + + // strings + CGFloat textSpaceWidth = (self.bounds.size.width / 2) - (knobRadius / 2); + + UIGraphicsPushContext(context); + + // 'ON' state label (self.onString) + CGSize onTextSize = [self.onString sizeWithFont:self.labelFont]; + CGPoint onTextPoint = CGPointMake((textSpaceWidth - onTextSize.width) / 2.0 + knobRadius * .15, floorf((self.bounds.size.height - onTextSize.height) / 2.0) + 1.0); + [[UIColor colorWithWhite:0.45 alpha:1.0] set]; // .2 & .4 + [self.onString drawAtPoint:CGPointMake(onTextPoint.x, onTextPoint.y - 1.0) withFont:self.labelFont]; + [[UIColor whiteColor] set]; + [self.onString drawAtPoint:onTextPoint withFont:self.labelFont]; + + // 'OFF' state label (self.offString) + CGSize offTextSize = [self.offString sizeWithFont:self.labelFont]; + CGPoint offTextPoint = CGPointMake(textSpaceWidth + (textSpaceWidth - offTextSize.width) / 2.0 + knobRadius * .86, floorf((self.bounds.size.height - offTextSize.height) / 2.0) + 1.0); + [[UIColor whiteColor] set]; + [self.offString drawAtPoint:CGPointMake(offTextPoint.x, offTextPoint.y + 1.0) withFont:self.labelFont]; + [[UIColor colorWithWhite:0.52 alpha:1.0] set]; + [self.offString drawAtPoint:offTextPoint withFont:self.labelFont]; + + UIGraphicsPopContext(); +} + +@end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsViewController.m rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m b/Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m similarity index 100% rename from InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m rename to Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m diff --git a/InAppSettingsKit/Controllers/IASKViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKViewController.h diff --git a/InAppSettingsKit/Models/IASKSettingsReader.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsReader.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.h diff --git a/InAppSettingsKit/Models/IASKSettingsReader.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsReader.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m diff --git a/InAppSettingsKit/Models/IASKSettingsStore.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStore.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.h diff --git a/InAppSettingsKit/Models/IASKSettingsStore.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStore.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.m diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreFile.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.h diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreFile.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.m diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m diff --git a/InAppSettingsKit/Models/IASKSpecifier.h b/Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.h similarity index 100% rename from InAppSettingsKit/Models/IASKSpecifier.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.h diff --git a/InAppSettingsKit/Models/IASKSpecifier.m b/Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.m similarity index 100% rename from InAppSettingsKit/Models/IASKSpecifier.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.m diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h b/Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h similarity index 100% rename from InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h rename to Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m b/Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m similarity index 100% rename from InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m rename to Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h b/Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h similarity index 100% rename from InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m b/Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m similarity index 100% rename from InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h b/Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h similarity index 100% rename from InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m b/Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m similarity index 100% rename from InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m diff --git a/InAppSettingsKit/Views/IASKSlider.h b/Classes/Utils/InAppSettingsKit/Views/IASKSlider.h similarity index 100% rename from InAppSettingsKit/Views/IASKSlider.h rename to Classes/Utils/InAppSettingsKit/Views/IASKSlider.h diff --git a/InAppSettingsKit/Views/IASKSlider.m b/Classes/Utils/InAppSettingsKit/Views/IASKSlider.m similarity index 100% rename from InAppSettingsKit/Views/IASKSlider.m rename to Classes/Utils/InAppSettingsKit/Views/IASKSlider.m diff --git a/InAppSettingsKit/Views/IASKSwitch.h b/Classes/Utils/InAppSettingsKit/Views/IASKSwitch.h similarity index 100% rename from InAppSettingsKit/Views/IASKSwitch.h rename to Classes/Utils/InAppSettingsKit/Views/IASKSwitch.h diff --git a/InAppSettingsKit/Views/IASKSwitch.m b/Classes/Utils/InAppSettingsKit/Views/IASKSwitch.m similarity index 100% rename from InAppSettingsKit/Views/IASKSwitch.m rename to Classes/Utils/InAppSettingsKit/Views/IASKSwitch.m diff --git a/InAppSettingsKit/Views/IASKTextField.h b/Classes/Utils/InAppSettingsKit/Views/IASKTextField.h similarity index 100% rename from InAppSettingsKit/Views/IASKTextField.h rename to Classes/Utils/InAppSettingsKit/Views/IASKTextField.h diff --git a/InAppSettingsKit/Views/IASKTextField.m b/Classes/Utils/InAppSettingsKit/Views/IASKTextField.m similarity index 100% rename from InAppSettingsKit/Views/IASKTextField.m rename to Classes/Utils/InAppSettingsKit/Views/IASKTextField.m diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b018832b9..b0ec8549a 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -604,36 +604,46 @@ D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; }; D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; - D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; - D37DC6EE1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; - D37DC6EF1594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */; }; - D37DC6F01594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */; }; - D37DC6F11594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */; }; - D37DC6F21594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */; }; - D37DC6F31594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */; }; - D37DC6F41594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */; }; - D37DC6F51594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */; }; - D37DC6F61594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */; }; - D37DC6F71594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */; }; - D37DC6F81594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */; }; - D37DC6F91594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */; }; - D37DC6FA1594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */; }; - D37DC6FB1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */; }; - D37DC6FC1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */; }; - D37DC6FD1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */; }; - D37DC6FE1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */; }; - D37DC6FF1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */; }; - D37DC7001594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */; }; - D37DC7011594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */; }; - D37DC7021594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */; }; - D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */; }; - D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */; }; - D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */; }; - D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */; }; - D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */; }; - D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */; }; D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; + D3807FBF15C28940005BE9BC /* DCRoundSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FB815C28940005BE9BC /* DCRoundSwitch.m */; }; + D3807FC015C28940005BE9BC /* DCRoundSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FB815C28940005BE9BC /* DCRoundSwitch.m */; }; + D3807FC115C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */; }; + D3807FC215C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */; }; + D3807FC315C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */; }; + D3807FC415C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */; }; + D3807FC515C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */; }; + D3807FC615C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */; }; + D3807FE815C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */; }; + D3807FE915C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */; }; + D3807FEA15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */; }; + D3807FEB15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */; }; + D3807FEC15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */; }; + D3807FED15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */; }; + D3807FEE15C2894A005BE9BC /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */; }; + D3807FEF15C2894A005BE9BC /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */; }; + D3807FF015C2894A005BE9BC /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */; }; + D3807FF115C2894A005BE9BC /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */; }; + D3807FF215C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */; }; + D3807FF315C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */; }; + D3807FF415C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */; }; + D3807FF515C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */; }; + D3807FF615C2894A005BE9BC /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */; }; + D3807FF715C2894A005BE9BC /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */; }; + D3807FF815C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */; }; + D3807FF915C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */; }; + D3807FFA15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */; }; + D3807FFB15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */; }; + D3807FFC15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */; }; + D3807FFD15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */; }; + D3807FFE15C2894A005BE9BC /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE315C2894A005BE9BC /* IASKSlider.m */; }; + D3807FFF15C2894A005BE9BC /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE315C2894A005BE9BC /* IASKSlider.m */; }; + D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE515C2894A005BE9BC /* IASKSwitch.m */; }; + D380800115C2894A005BE9BC /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE515C2894A005BE9BC /* IASKSwitch.m */; }; + D380800215C2894A005BE9BC /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE715C2894A005BE9BC /* IASKTextField.m */; }; + D380800315C2894A005BE9BC /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE715C2894A005BE9BC /* IASKTextField.m */; }; + D380800515C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; }; + D380800615C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; }; D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; }; D38327F41580FE3A00FA0D23 /* contacts_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts_selected.png */; }; D38327F51580FE3A00FA0D23 /* dialer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer_default.png */; }; @@ -1354,36 +1364,45 @@ D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsTableViewController.m; sourceTree = ""; }; D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; - D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; - D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKAppSettingsViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6C71594AE6F00B2A5EB /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; - D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKAppSettingsWebViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6C91594AE6F00B2A5EB /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; - D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; - D37DC6CB1594AE6F00B2A5EB /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; - D37DC6CD1594AE6F00B2A5EB /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; - D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKSettingsReader.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6CF1594AE6F00B2A5EB /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; - D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; - D37DC6D11594AE6F00B2A5EB /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; - D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKSettingsStoreFile.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6D31594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; - D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; - D37DC6D51594AE6F00B2A5EB /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; - D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = ""; }; - D37DC6D81594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = ""; }; - D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = ""; }; - D37DC6DA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = ""; }; - D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; - D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; - D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; - D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; - D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; - D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; - D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; - D37DC6E41594AE6F00B2A5EB /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; - D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; D37DC7171594AF3400B2A5EB /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; + D3807FB715C28940005BE9BC /* DCRoundSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitch.h; sourceTree = ""; }; + D3807FB815C28940005BE9BC /* DCRoundSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitch.m; sourceTree = ""; }; + D3807FB915C28940005BE9BC /* DCRoundSwitchKnobLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchKnobLayer.h; sourceTree = ""; }; + D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitchKnobLayer.m; sourceTree = ""; }; + D3807FBB15C28940005BE9BC /* DCRoundSwitchOutlineLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchOutlineLayer.h; sourceTree = ""; }; + D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitchOutlineLayer.m; sourceTree = ""; }; + D3807FBD15C28940005BE9BC /* DCRoundSwitchToggleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchToggleLayer.h; sourceTree = ""; }; + D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitchToggleLayer.m; sourceTree = ""; }; + D3807FC915C2894A005BE9BC /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; + D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = ""; }; + D3807FCB15C2894A005BE9BC /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; + D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsWebViewController.m; sourceTree = ""; }; + D3807FCD15C2894A005BE9BC /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; + D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; + D3807FCF15C2894A005BE9BC /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; + D3807FD115C2894A005BE9BC /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; + D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsReader.m; sourceTree = ""; }; + D3807FD315C2894A005BE9BC /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; + D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; + D3807FD515C2894A005BE9BC /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; + D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreFile.m; sourceTree = ""; }; + D3807FD715C2894A005BE9BC /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; + D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; + D3807FD915C2894A005BE9BC /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; + D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = ""; }; + D3807FDC15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = ""; }; + D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = ""; }; + D3807FDE15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = ""; }; + D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; + D3807FE015C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; + D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; + D3807FE215C2894A005BE9BC /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; + D3807FE315C2894A005BE9BC /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; + D3807FE415C2894A005BE9BC /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; + D3807FE515C2894A005BE9BC /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; + D3807FE615C2894A005BE9BC /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; + D3807FE715C2894A005BE9BC /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; + D380800415C28A7A005BE9BC /* UILinphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILinphone.m; sourceTree = ""; }; D38327EB1580FE3A00FA0D23 /* contacts_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_default.png; path = Resources/contacts_default.png; sourceTree = ""; }; D38327EC1580FE3A00FA0D23 /* contacts_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_selected.png; path = Resources/contacts_selected.png; sourceTree = ""; }; D38327ED1580FE3A00FA0D23 /* dialer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_default.png; path = Resources/dialer_default.png; sourceTree = ""; }; @@ -2040,6 +2059,7 @@ D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */, D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */, D3E84F3C15B018A600420DAC /* UILinphone.h */, + D380800415C28A7A005BE9BC /* UILinphone.m */, D32409C1158B49A600C8C119 /* UILongTouchButton.h */, D32409C2158B49A600C8C119 /* UILongTouchButton.m */, D3ED3E841586291B006C0DE4 /* UIMainBar.h */, @@ -2203,7 +2223,6 @@ D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97323FDCFA39411CA2CEA /* Frameworks */, - D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */, 220FAC77107654FC0068D98F /* include */, 2214783B1386A2030020F8B8 /* Localizable.strings */, 29B97315FDCFA39411CA2CEA /* Other Sources */, @@ -2511,8 +2530,10 @@ isa = PBXGroup; children = ( D38935F715A6D06800A3A3AA /* CPAnimation */, + D3807FB615C28940005BE9BC /* DCRoundSwitch */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, + D3807FC715C2894A005BE9BC /* InAppSettingsKit */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, @@ -2533,67 +2554,81 @@ name = Model; sourceTree = ""; }; - D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */ = { + D3807FB615C28940005BE9BC /* DCRoundSwitch */ = { isa = PBXGroup; children = ( - D37DC6C41594AE6F00B2A5EB /* Controllers */, - D37DC6CC1594AE6F00B2A5EB /* Models */, - D37DC6D71594AE6F00B2A5EB /* Views */, + D3807FB715C28940005BE9BC /* DCRoundSwitch.h */, + D3807FB815C28940005BE9BC /* DCRoundSwitch.m */, + D3807FB915C28940005BE9BC /* DCRoundSwitchKnobLayer.h */, + D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */, + D3807FBB15C28940005BE9BC /* DCRoundSwitchOutlineLayer.h */, + D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */, + D3807FBD15C28940005BE9BC /* DCRoundSwitchToggleLayer.h */, + D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */, + ); + name = DCRoundSwitch; + path = Utils/DCRoundSwitch; + sourceTree = ""; + }; + D3807FC715C2894A005BE9BC /* InAppSettingsKit */ = { + isa = PBXGroup; + children = ( + D3807FC815C2894A005BE9BC /* Controllers */, + D3807FD015C2894A005BE9BC /* Models */, + D3807FDB15C2894A005BE9BC /* Views */, ); name = InAppSettingsKit; + path = Utils/InAppSettingsKit; sourceTree = ""; }; - D37DC6C41594AE6F00B2A5EB /* Controllers */ = { + D3807FC815C2894A005BE9BC /* Controllers */ = { isa = PBXGroup; children = ( - D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */, - D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */, - D37DC6C71594AE6F00B2A5EB /* IASKAppSettingsWebViewController.h */, - D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */, - D37DC6C91594AE6F00B2A5EB /* IASKSpecifierValuesViewController.h */, - D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */, - D37DC6CB1594AE6F00B2A5EB /* IASKViewController.h */, + D3807FC915C2894A005BE9BC /* IASKAppSettingsViewController.h */, + D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */, + D3807FCB15C2894A005BE9BC /* IASKAppSettingsWebViewController.h */, + D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */, + D3807FCD15C2894A005BE9BC /* IASKSpecifierValuesViewController.h */, + D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */, + D3807FCF15C2894A005BE9BC /* IASKViewController.h */, ); - name = Controllers; - path = InAppSettingsKit/Controllers; + path = Controllers; sourceTree = ""; }; - D37DC6CC1594AE6F00B2A5EB /* Models */ = { + D3807FD015C2894A005BE9BC /* Models */ = { isa = PBXGroup; children = ( - D37DC6CD1594AE6F00B2A5EB /* IASKSettingsReader.h */, - D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */, - D37DC6CF1594AE6F00B2A5EB /* IASKSettingsStore.h */, - D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */, - D37DC6D11594AE6F00B2A5EB /* IASKSettingsStoreFile.h */, - D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */, - D37DC6D31594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.h */, - D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */, - D37DC6D51594AE6F00B2A5EB /* IASKSpecifier.h */, - D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */, + D3807FD115C2894A005BE9BC /* IASKSettingsReader.h */, + D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */, + D3807FD315C2894A005BE9BC /* IASKSettingsStore.h */, + D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */, + D3807FD515C2894A005BE9BC /* IASKSettingsStoreFile.h */, + D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */, + D3807FD715C2894A005BE9BC /* IASKSettingsStoreUserDefaults.h */, + D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */, + D3807FD915C2894A005BE9BC /* IASKSpecifier.h */, + D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */, ); - name = Models; - path = InAppSettingsKit/Models; + path = Models; sourceTree = ""; }; - D37DC6D71594AE6F00B2A5EB /* Views */ = { + D3807FDB15C2894A005BE9BC /* Views */ = { isa = PBXGroup; children = ( - D37DC6D81594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.h */, - D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */, - D37DC6DA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.h */, - D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */, - D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */, - D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */, - D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */, - D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */, - D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */, - D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */, - D37DC6E41594AE6F00B2A5EB /* IASKTextField.h */, - D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */, + D3807FDC15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.h */, + D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */, + D3807FDE15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.h */, + D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */, + D3807FE015C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.h */, + D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */, + D3807FE215C2894A005BE9BC /* IASKSlider.h */, + D3807FE315C2894A005BE9BC /* IASKSlider.m */, + D3807FE415C2894A005BE9BC /* IASKSwitch.h */, + D3807FE515C2894A005BE9BC /* IASKSwitch.m */, + D3807FE615C2894A005BE9BC /* IASKTextField.h */, + D3807FE715C2894A005BE9BC /* IASKTextField.m */, ); - name = Views; - path = InAppSettingsKit/Views; + path = Views; sourceTree = ""; }; D38935F715A6D06800A3A3AA /* CPAnimation */ = { @@ -3395,20 +3430,6 @@ D35E7597159460580066B1C1 /* ChatViewController.m in Sources */, D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */, D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */, - D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */, - D37DC6EF1594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */, - D37DC6F11594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */, - D37DC6F31594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */, - D37DC6F51594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */, - D37DC6F71594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */, - D37DC6F91594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */, - D37DC6FB1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */, - D37DC6FD1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */, - D37DC6FF1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */, - D37DC7011594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */, - D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */, - D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */, - D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */, D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */, D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */, D3EA5411159853750037DC6B /* UIChatCell.m in Sources */, @@ -3440,6 +3461,25 @@ D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, + D3807FBF15C28940005BE9BC /* DCRoundSwitch.m in Sources */, + D3807FC115C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */, + D3807FC315C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */, + D3807FC515C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */, + D3807FE815C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */, + D3807FEA15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */, + D3807FEC15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */, + D3807FEE15C2894A005BE9BC /* IASKSettingsReader.m in Sources */, + D3807FF015C2894A005BE9BC /* IASKSettingsStore.m in Sources */, + D3807FF215C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */, + D3807FF415C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */, + D3807FF615C2894A005BE9BC /* IASKSpecifier.m in Sources */, + D3807FF815C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */, + D3807FFA15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + D3807FFC15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + D3807FFE15C2894A005BE9BC /* IASKSlider.m in Sources */, + D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */, + D380800215C2894A005BE9BC /* IASKTextField.m in Sources */, + D380800515C28A7A005BE9BC /* UILinphone.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3484,20 +3524,6 @@ D35E7598159460580066B1C1 /* ChatViewController.m in Sources */, D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */, D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */, - D37DC6EE1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */, - D37DC6F01594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */, - D37DC6F21594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */, - D37DC6F41594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */, - D37DC6F61594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */, - D37DC6F81594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */, - D37DC6FA1594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */, - D37DC6FC1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */, - D37DC6FE1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */, - D37DC7001594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */, - D37DC7021594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */, - D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */, - D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */, - D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */, D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */, D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */, D3EA5412159853750037DC6B /* UIChatCell.m in Sources */, @@ -3529,6 +3555,25 @@ D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, + D3807FC015C28940005BE9BC /* DCRoundSwitch.m in Sources */, + D3807FC215C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */, + D3807FC415C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */, + D3807FC615C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */, + D3807FE915C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */, + D3807FEB15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */, + D3807FED15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */, + D3807FEF15C2894A005BE9BC /* IASKSettingsReader.m in Sources */, + D3807FF115C2894A005BE9BC /* IASKSettingsStore.m in Sources */, + D3807FF315C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */, + D3807FF515C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */, + D3807FF715C2894A005BE9BC /* IASKSpecifier.m in Sources */, + D3807FF915C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */, + D3807FFB15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + D3807FFD15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + D3807FFF15C2894A005BE9BC /* IASKSlider.m in Sources */, + D380800115C2894A005BE9BC /* IASKSwitch.m in Sources */, + D380800315C2894A005BE9BC /* IASKTextField.m in Sources */, + D380800615C28A7A005BE9BC /* UILinphone.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };