diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib
index 58deeddcf..43e580e0e 100644
--- a/Classes/HistoryDetailsViewController.xib
+++ b/Classes/HistoryDetailsViewController.xib
@@ -3,19 +3,19 @@
1296
11E53
- 2182
+ 2549
1138.47
569.00
+ IBProxyObject
IBUIButton
IBUIImageView
- IBUIView
IBUILabel
- IBProxyObject
+ IBUIView
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -53,7 +53,7 @@
IBCocoaTouchFramework
diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h
index 4b947218c..238c35afc 100644
--- a/Classes/LinphoneUI/UILinphone.h
+++ b/Classes/LinphoneUI/UILinphone.h
@@ -17,9 +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:177.0f/255.0f green:200.0f/255.0f blue:0.0f/255.0f alpha:1.0f]
#define LINPHONE_TABLE_CELL_BACKGROUND_COLOR [UIColor colorWithRed:177.0f/255.0f green:200.0f/255.0f blue:0.0f/255.0f alpha:1.0f]
-#endif
+@interface UIColor (LightAndDark)
+
+- (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 69f5085d6..30da6f0b6 100644
--- a/Classes/SettingsViewController.m
+++ b/Classes/SettingsViewController.m
@@ -19,6 +19,237 @@
#import "SettingsViewController.h"
#import "LinphoneManager.h"
+#import "UILinphone.h"
+#import "UACellBackgroundView.h"
+
+#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 darkerColor]];
+ }
+
+ cell.detailTextLabel.textColor = [LINPHONE_MAIN_COLOR darkerColor];
+
+ // 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 {
+
+}
+@end
+
+@implementation UINavigationBarEx
+
+
+#pragma mark - Lifecycle Functions
+
+- (void)initUINavigationBarEx {
+ [self setTintColor:LINPHONE_MAIN_COLOR];
+}
+
+- (id)init {
+ self = [super init];
+ if (self) {
+ [self initUINavigationBarEx];
+ }
+ return self;
+}
+
+- (id)initWithCoder:(NSCoder *)aDecoder {
+ self = [super initWithCoder:aDecoder];
+ if (self) {
+ [self initUINavigationBarEx];
+ }
+ return self;
+}
+
+- (id)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ [self initUINavigationBarEx];
+ }
+ return self;
+}
+
+- (void)drawRect:(CGRect)rect {
+ UIImage *img = [UIImage imageNamed:@"settings_bar_background.png"];
+ [img drawInRect:rect];
+}
+
+@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 {
+ [UINavigationControllerEx removeTableBackground:rootViewController.view];
+ return [super initWithRootViewController:rootViewController];
+}
+
+- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
+ [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];
+ labelTitleView.shadowColor = [UIColor colorWithWhite:1.0 alpha:0.5];
+ labelTitleView.font = [UIFont boldSystemFontOfSize:20];
+ labelTitleView.shadowOffset = CGSizeMake(0,1);
+ labelTitleView.textAlignment = UITextAlignmentCenter;
+ labelTitleView.text = viewController.title;
+ [labelTitleView sizeToFit];
+ viewController.navigationItem.titleView = labelTitleView;
+
+ [super pushViewController:viewController animated:animated];
+}
+
+- (void)setViewControllers:(NSArray *)viewControllers {
+ for(UIViewController *controller in viewControllers) {
+ [UINavigationControllerEx removeTableBackground:controller.view];
+ }
+ [super setViewControllers:viewControllers];
+}
+
+- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated {
+ for(UIViewController *controller in viewControllers) {
+ [UINavigationControllerEx removeTableBackground:controller.view];
+ }
+ [super setViewControllers:viewControllers animated:animated];
+}
+
+@end
+
@implementation SettingsViewController
@@ -59,17 +290,6 @@ static UICompositeViewDescription *compositeDescription = nil;
}
-#pragma mark -
-
-+ (void)removeBackground:(UIView*)view {
- if([view isKindOfClass:[UITableView class]]) {
- [view setBackgroundColor:[UIColor clearColor]];
- }
- for(UIView *subview in [view subviews]) {
- [SettingsViewController removeBackground:subview];
- }
-}
-
#pragma mark - ViewController Functions
- (void)viewDidLoad {
@@ -82,8 +302,7 @@ static UICompositeViewDescription *compositeDescription = nil;
settingsController.settingsStore = [[LinphoneManager instance] settingsStore];
navigationController.view.frame = self.view.frame;
- [SettingsViewController removeBackground:navigationController.view];
- [SettingsViewController removeBackground:settingsController.view];
+ [navigationController pushViewController:settingsController animated:FALSE];
[self.view addSubview: navigationController.view];
}
diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib
index 4d1cbfb30..f4b4552a1 100644
--- a/Classes/SettingsViewController.xib
+++ b/Classes/SettingsViewController.xib
@@ -3,20 +3,20 @@
1296
11E53
- 2182
+ 2549
1138.47
569.00
- IBUINavigationBar
- IBUINavigationItem
- IBUIViewController
- IBUIView
- IBUINavigationController
IBProxyObject
+ IBUINavigationBar
+ IBUINavigationController
+ IBUINavigationItem
+ IBUIView
+ IBUIViewController
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -48,6 +48,20 @@
IBCocoaTouchFramework
+
@@ -67,24 +81,7 @@
YES
IBCocoaTouchFramework
-
-
- NO
-
-
- Settings
- IBCocoaTouchFramework
-
-
-
-
- 1
- 1
-
- IBCocoaTouchFramework
- NO
-
-
+
@@ -97,14 +94,6 @@
9
-
-
- settingsController
-
-
-
- 8
-
navigationController
@@ -113,6 +102,14 @@
15
+
+
+ settingsController
+
+
+
+ 8
+
@@ -144,7 +141,6 @@
-
navigationController
@@ -161,7 +157,7 @@
-
+
settingsController
@@ -177,11 +173,13 @@
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
UIResponder
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ UINavigationControllerEx
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ UINavigationBarEx
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- IASKAppSettingsViewController
+ IASKAppSettingsViewControllerEx
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -211,6 +209,14 @@
./Classes/IASKAppSettingsViewController.h
+
+ IASKAppSettingsViewControllerEx
+ IASKAppSettingsViewController
+
+ IBProjectSource
+ ./Classes/IASKAppSettingsViewControllerEx.h
+
+
SettingsViewController
UIViewController
@@ -233,6 +239,22 @@
./Classes/SettingsViewController.h
+
+ UINavigationBarEx
+ UINavigationBar
+
+ IBProjectSource
+ ./Classes/UINavigationBarEx.h
+
+
+
+ UINavigationControllerEx
+ UINavigationController
+
+ IBProjectSource
+ ./Classes/UINavigationControllerEx.h
+
+
0
@@ -243,6 +265,6 @@
YES
3
- 1181
+ 1498
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/Resources/history_details_bar_background.png b/Resources/history_details_bar_background.png
new file mode 100644
index 000000000..e3638e197
Binary files /dev/null and b/Resources/history_details_bar_background.png differ
diff --git a/Resources/settings_bar_background.png b/Resources/settings_bar_background.png
new file mode 100644
index 000000000..e3638e197
Binary files /dev/null and b/Resources/settings_bar_background.png differ
diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
index 088ccedab..cc662c2b0 100755
--- a/linphone.xcodeproj/project.pbxproj
+++ b/linphone.xcodeproj/project.pbxproj
@@ -592,36 +592,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 */; };
@@ -651,6 +661,10 @@
D3A8BB7F15A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; };
D3A8BB8115A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; };
D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; };
+ D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; };
+ D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; };
+ D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; };
+ D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; };
D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; };
D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; };
D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; };
@@ -1335,36 +1349,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 = ""; };
@@ -1398,6 +1421,8 @@
D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_disabled.png; path = Resources/setup_cancel_disabled.png; sourceTree = ""; };
D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_disabled.png; path = Resources/setup_start_disabled.png; sourceTree = ""; };
D3B829FC15C148C90036C93E /* castel.xsd */ = {isa = PBXFileReference; lastKnownFileType = text; path = castel.xsd; sourceTree = ""; };
+ D3B82A0015C18A710036C93E /* history_details_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_bar_background.png; path = Resources/history_details_bar_background.png; sourceTree = ""; };
+ D3B82A0115C18A710036C93E /* settings_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_bar_background.png; path = Resources/settings_bar_background.png; sourceTree = ""; };
D3B9A3DA15A58C440096EA4E /* chat_field.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.png; path = Resources/chat_field.png; sourceTree = ""; };
D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_default.png; path = Resources/chat_ok_default.png; sourceTree = ""; };
D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_over.png; path = Resources/chat_ok_over.png; sourceTree = ""; };
@@ -2029,6 +2054,7 @@
D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */,
D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */,
D3E84F3C15B018A600420DAC /* UILinphone.h */,
+ D380800415C28A7A005BE9BC /* UILinphone.m */,
D32409C1158B49A600C8C119 /* UILongTouchButton.h */,
D32409C2158B49A600C8C119 /* UILongTouchButton.m */,
D3ED3E841586291B006C0DE4 /* UIMainBar.h */,
@@ -2193,7 +2219,6 @@
D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
- D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */,
220FAC77107654FC0068D98F /* include */,
2214783B1386A2030020F8B8 /* Localizable.strings */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
@@ -2345,6 +2370,7 @@
D3157A8915B4466F00DD8C4C /* history_details_add_over.png */,
D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */,
D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */,
+ D3B82A0015C18A710036C93E /* history_details_bar_background.png */,
D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */,
D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */,
D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */,
@@ -2439,6 +2465,7 @@
D3D6A3A5159B0EFE005F692C /* security_ko.png */,
D3D6A3A7159B0EFE005F692C /* security_ok.png */,
D3D6A3A6159B0EFE005F692C /* security_pending.png */,
+ D3B82A0115C18A710036C93E /* settings_bar_background.png */,
D38327EF1580FE3A00FA0D23 /* settings_default.png */,
D38327FE158100E400FA0D23 /* settings_over.png */,
D38327F01580FE3A00FA0D23 /* settings_selected.png */,
@@ -2506,8 +2533,10 @@
children = (
D34BD60D15C136770070C209 /* GDataXML */,
D38935F715A6D06800A3A3AA /* CPAnimation */,
+ D3807FB615C28940005BE9BC /* DCRoundSwitch */,
D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */,
D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */,
+ D3807FC715C2894A005BE9BC /* InAppSettingsKit */,
D326483615887D5200930C67 /* OrderedDictionary.h */,
D326483715887D5200930C67 /* OrderedDictionary.m */,
D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */,
@@ -2537,67 +2566,81 @@
name = GDataXML;
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 */ = {
@@ -3046,6 +3089,8 @@
D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */,
D3FF9F7F15BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */,
D3FF9F8015BFDE1A00EBD584 /* dialer_alt_button_options_over.png in Resources */,
+ D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */,
+ D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3346,6 +3391,8 @@
D34BD74115C13E250070C209 /* Localizable.strings in Resources */,
D34BD74215C13E350070C209 /* untitled.plist in Resources */,
D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */,
+ D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */,
+ D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3392,20 +3439,6 @@
D35E7581159328EB0066B1C1 /* UIAddressTextField.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 */,
D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */,
D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */,
@@ -3432,6 +3465,25 @@
D35860D615B549B500513429 /* Utils.m in Sources */,
D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */,
D34BD61015C136D70070C209 /* GDataXMLNode.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;
};
@@ -3475,20 +3527,6 @@
D35E7582159328EB0066B1C1 /* UIAddressTextField.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 */,
D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */,
D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */,
@@ -3515,6 +3553,25 @@
D35860D715B549B500513429 /* Utils.m in Sources */,
D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */,
D34BD61115C136D70070C209 /* GDataXMLNode.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;
};