forked from mirrors/linphone-iphone
In app settings WIP
This commit is contained in:
parent
f9c30d331b
commit
d42c91f802
48 changed files with 5146 additions and 137 deletions
|
|
@ -21,11 +21,13 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
|
||||
#import "CoreTelephony/CTCallCenter.h"
|
||||
#import "IASKAppSettingsViewController.h"
|
||||
|
||||
#define HISTORY_TAB_INDEX 0
|
||||
#define DIALER_TAB_INDEX 1
|
||||
#define CONTACTS_TAB_INDEX 2
|
||||
#define HISTORY_TAB_INDEX 0
|
||||
#define MORE_TAB_INDEX 3
|
||||
#define SETTINGS_TAB_INDEX 3
|
||||
#define MORE_TAB_INDEX 4
|
||||
|
||||
@class ContactPickerDelegate;
|
||||
@class IncallViewController;
|
||||
|
|
@ -38,6 +40,8 @@
|
|||
IBOutlet UITabBarController* myTabBarController;
|
||||
IBOutlet ABPeoplePickerNavigationController* myPeoplePickerController;
|
||||
IBOutlet PhoneViewController* myPhoneViewController;
|
||||
IBOutlet UINavigationController* moreNavigationController;
|
||||
IBOutlet IASKAppSettingsViewController* settingsController;
|
||||
CallHistoryTableViewController* myCallHistoryTableViewController;
|
||||
ContactPickerDelegate* myContactPickerDelegate;
|
||||
|
||||
|
|
@ -53,8 +57,9 @@
|
|||
@property (nonatomic, retain) IBOutlet UIWindow *window;
|
||||
@property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController;
|
||||
@property (nonatomic, retain) ABPeoplePickerNavigationController* myPeoplePickerController;
|
||||
@property (nonatomic, retain) IBOutlet UINavigationController* moreNavigationController;
|
||||
@property (nonatomic, retain) IBOutlet PhoneViewController* myPhoneViewController;
|
||||
|
||||
@property (nonatomic, retain) IBOutlet IASKAppSettingsViewController* settingsController;
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ int __aeabi_idiv(int a, int b) {
|
|||
@synthesize myTabBarController;
|
||||
@synthesize myPeoplePickerController;
|
||||
@synthesize myPhoneViewController;
|
||||
@synthesize moreNavigationController;
|
||||
@synthesize settingsController;
|
||||
|
||||
-(void) handleGSMCallInteration: (id) cCenter {
|
||||
CTCallCenter* ct = (CTCallCenter*) cCenter;
|
||||
|
|
@ -167,43 +169,20 @@ int __aeabi_idiv(int a, int b) {
|
|||
}
|
||||
|
||||
-(void) setupUI {
|
||||
//as defined in PhoneMainView.xib
|
||||
//dialer
|
||||
myPhoneViewController = (PhoneViewController*) [myTabBarController.viewControllers objectAtIndex: DIALER_TAB_INDEX];
|
||||
myPhoneViewController.myTabBarController = myTabBarController;
|
||||
//Call history
|
||||
myCallHistoryTableViewController = [[CallHistoryTableViewController alloc] initWithNibName:@"CallHistoryTableViewController"
|
||||
bundle:[NSBundle mainBundle]];
|
||||
UINavigationController *aCallHistNavigationController = [[UINavigationController alloc] initWithRootViewController:myCallHistoryTableViewController];
|
||||
aCallHistNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:HISTORY_TAB_INDEX] tabBarItem];
|
||||
|
||||
//people picker delegates
|
||||
// Contacts
|
||||
myContactPickerDelegate = [[ContactPickerDelegate alloc] init];
|
||||
//people picker
|
||||
myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease];
|
||||
[myPeoplePickerController setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]];
|
||||
[myPeoplePickerController setPeoplePickerDelegate:myContactPickerDelegate];
|
||||
//copy tab bar item
|
||||
myPeoplePickerController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:CONTACTS_TAB_INDEX] tabBarItem];
|
||||
|
||||
//more tab
|
||||
MoreViewController *moreViewController = [[MoreViewController alloc] initWithNibName:@"MoreViewController" bundle:[NSBundle mainBundle]];
|
||||
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:moreViewController];
|
||||
[moreViewController release];
|
||||
//copy tab bar item
|
||||
aNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:MORE_TAB_INDEX] tabBarItem];
|
||||
|
||||
//insert contact controller
|
||||
NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.myTabBarController.viewControllers];
|
||||
[newArray replaceObjectAtIndex:CONTACTS_TAB_INDEX withObject:myPeoplePickerController];
|
||||
[newArray replaceObjectAtIndex:MORE_TAB_INDEX withObject:aNavigationController];
|
||||
[aNavigationController release];
|
||||
[newArray replaceObjectAtIndex:HISTORY_TAB_INDEX withObject:aCallHistNavigationController];
|
||||
[aCallHistNavigationController release];
|
||||
|
||||
[myTabBarController setSelectedIndex:DIALER_TAB_INDEX];
|
||||
[myTabBarController setViewControllers:newArray animated:NO];
|
||||
|
||||
//people picker
|
||||
myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease];
|
||||
[myPeoplePickerController setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]];
|
||||
[myPeoplePickerController setPeoplePickerDelegate:myContactPickerDelegate];
|
||||
//copy tab bar item
|
||||
myPeoplePickerController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:CONTACTS_TAB_INDEX] tabBarItem];
|
||||
|
||||
NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.myTabBarController.viewControllers];
|
||||
[newArray replaceObjectAtIndex:CONTACTS_TAB_INDEX withObject:myPeoplePickerController];
|
||||
[myTabBarController setViewControllers:newArray animated:NO];
|
||||
|
||||
[myTabBarController setSelectedIndex:DIALER_TAB_INDEX];
|
||||
[window addSubview:myTabBarController.view];
|
||||
|
||||
[window makeKeyAndVisible];
|
||||
|
|
@ -257,6 +236,12 @@ int __aeabi_idiv(int a, int b) {
|
|||
|
||||
[[LinphoneManager instance] startLibLinphone];
|
||||
|
||||
// Settings, setup delegate
|
||||
settingsController.delegate = [LinphoneManager instance];
|
||||
settingsController.settingsReader.delegate = [LinphoneManager instance];
|
||||
[settingsController.settingsReader init];
|
||||
|
||||
|
||||
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
|
||||
|
||||
[self setupGSMInteraction];
|
||||
|
|
@ -282,6 +267,4 @@ int __aeabi_idiv(int a, int b) {
|
|||
linphone_core_accept_call([LinphoneManager getLc], call);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
|||
15
Classes/LinphoneCoreSettingsStore.h
Normal file
15
Classes/LinphoneCoreSettingsStore.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//
|
||||
// LinphoneCoreSettingsStore.h
|
||||
// linphone
|
||||
//
|
||||
// Created by Pierre-Eric Pelloux-Prayer on 22/05/12.
|
||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "IASKSettingsStore.h"
|
||||
|
||||
@interface LinphoneCoreSettingsStore : IASKAbstractSettingsStore {
|
||||
}
|
||||
|
||||
@end
|
||||
61
Classes/LinphoneCoreSettingsStore.m
Normal file
61
Classes/LinphoneCoreSettingsStore.m
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
//
|
||||
// LinphoneCoreSettingsStore.m
|
||||
// linphone
|
||||
//
|
||||
// Created by Pierre-Eric Pelloux-Prayer on 22/05/12.
|
||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LinphoneCoreSettingsStore.h"
|
||||
|
||||
|
||||
debugenable_preference
|
||||
transport_preference
|
||||
username_preference
|
||||
domain_preference
|
||||
password_preference
|
||||
check_config_disable_preference
|
||||
outbound_proxy_preference
|
||||
proxy_preference
|
||||
prefix_preference
|
||||
substitute_+_by_00_preference
|
||||
wifi_only_preference
|
||||
|
||||
silk_24k_preference
|
||||
speex_16k_preference
|
||||
speex_8k_preference
|
||||
silk_16k_preference
|
||||
amr_8k_preference
|
||||
gsm_8k_preference
|
||||
ilbc_preference
|
||||
pcmu_preference
|
||||
pcma_preference
|
||||
g722_preferenceg
|
||||
g729_preference
|
||||
|
||||
mp4v-es_preference
|
||||
h264_preference
|
||||
vp8_preference
|
||||
|
||||
enable_video_preference
|
||||
enable_srtp_preference
|
||||
stun_preference
|
||||
start_video_preference
|
||||
backgroundmode_preference
|
||||
|
||||
@implementation LinphoneCoreSettingsStore
|
||||
|
||||
|
||||
-(void) setObject:(id)value forKey:(NSString *)key {
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (id)objectForKey:(NSString*)key {
|
||||
return nil;
|
||||
}
|
||||
- (BOOL)synchronize {
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -23,6 +23,8 @@
|
|||
#include "linphonecore.h"
|
||||
#import "LogView.h"
|
||||
#import "LinphoneUIDelegates.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
#import "IASKAppSettingsViewController.h"
|
||||
|
||||
typedef enum _Connectivity {
|
||||
wifi,
|
||||
|
|
@ -49,7 +51,7 @@ typedef struct _LinphoneCallAppData {
|
|||
} LinphoneCallAppData;
|
||||
|
||||
|
||||
@interface LinphoneManager : NSObject <AVAudioSessionDelegate> {
|
||||
@interface LinphoneManager : NSObject <AVAudioSessionDelegate, IASKSettingsReaderFilterDelegate, IASKSettingsDelegate> {
|
||||
@protected
|
||||
SCNetworkReachabilityRef proxyReachability;
|
||||
@private
|
||||
|
|
@ -99,5 +101,6 @@ typedef struct _LinphoneCallAppData {
|
|||
@property Connectivity connectivity;
|
||||
@property (readonly) const char* frontCamId;
|
||||
@property (readonly) const char* backCamId;
|
||||
@property (nonatomic) bool isbackgroundModeEnabled;
|
||||
@end
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ extern void libmsbcg729_init();
|
|||
@synthesize connectivity;
|
||||
@synthesize frontCamId;
|
||||
@synthesize backCamId;
|
||||
@synthesize isbackgroundModeEnabled;
|
||||
|
||||
-(id) init {
|
||||
assert (!theLinphoneManager);
|
||||
|
|
@ -1069,5 +1070,53 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
|
|||
ms_message("UI - '%s' pressed", name);
|
||||
}
|
||||
|
||||
-(void) settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender {
|
||||
[self reconfigureLinphoneIfNeeded: currentSettings];
|
||||
}
|
||||
|
||||
-(NSDictionary*) filterPreferenceSpecifier:(NSDictionary *)specifier {
|
||||
if (!theLinphoneCore) {
|
||||
// LinphoneCore not ready: do not filter
|
||||
return specifier;
|
||||
}
|
||||
NSString* identifier = [specifier objectForKey:@"Identifier"];
|
||||
if (identifier == nil) {
|
||||
identifier = [specifier objectForKey:@"Key"];
|
||||
}
|
||||
if (!identifier) {
|
||||
// child pane maybe
|
||||
NSString* title = [specifier objectForKey:@"Title"];
|
||||
if ([title isEqualToString:@"Video"]) {
|
||||
if (!linphone_core_video_enabled(theLinphoneCore))
|
||||
return nil;
|
||||
}
|
||||
return specifier;
|
||||
}
|
||||
// NSLog(@"Specifier received: %@", identifier);
|
||||
if ([identifier isEqualToString:@"srtp_preference"]) {
|
||||
if (!ortp_srtp_supported())
|
||||
return nil;
|
||||
} else if ([identifier hasPrefix:@"silk"]) {
|
||||
if ([identifier isEqualToString:@"speex_24k_preference"]) {
|
||||
if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 24000)) return nil;
|
||||
} else if ([identifier isEqualToString:@"speex_16k_preference"]) {
|
||||
if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 16000)) return nil;
|
||||
} else if ([identifier isEqualToString:@"speex_8k_preference"]) {
|
||||
if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 8000)) return nil;
|
||||
}
|
||||
} else if ([identifier isEqualToString:@"backgroundmode_preference"]) {
|
||||
UIDevice* device = [UIDevice currentDevice];
|
||||
if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
|
||||
if ([device isMultitaskingSupported]) {
|
||||
return specifier;
|
||||
}
|
||||
}
|
||||
// hide setting if bg mode not supported
|
||||
return nil;
|
||||
}
|
||||
return specifier;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
|||
84
InAppSettingsKit/Controllers/IASKAppSettingsViewController.h
Normal file
84
InAppSettingsKit/Controllers/IASKAppSettingsViewController.h
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
//
|
||||
// IASKAppSettingsViewController.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <MessageUI/MessageUI.h>
|
||||
|
||||
#import "IASKSettingsStore.h"
|
||||
#import "IASKViewController.h"
|
||||
|
||||
@class IASKSettingsReader;
|
||||
@class IASKAppSettingsViewController;
|
||||
@class IASKSpecifier;
|
||||
|
||||
@protocol IASKSettingsDelegate
|
||||
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender;
|
||||
|
||||
@optional
|
||||
#pragma mark - UITableView header customization
|
||||
- (CGFloat) settingsViewController:(id<IASKViewController>)settingsViewController
|
||||
tableView:(UITableView *)tableView
|
||||
heightForHeaderForSection:(NSInteger)section;
|
||||
- (UIView *) settingsViewController:(id<IASKViewController>)settingsViewController
|
||||
tableView:(UITableView *)tableView
|
||||
viewForHeaderForSection:(NSInteger)section;
|
||||
|
||||
#pragma mark - UITableView cell customization
|
||||
- (CGFloat)tableView:(UITableView*)tableView heightForSpecifier:(IASKSpecifier*)specifier;
|
||||
- (UITableViewCell*)tableView:(UITableView*)tableView cellForSpecifier:(IASKSpecifier*)specifier;
|
||||
|
||||
#pragma mark - mail composing customization
|
||||
- (NSString*) settingsViewController:(id<IASKViewController>)settingsViewController
|
||||
mailComposeBodyForSpecifier:(IASKSpecifier*) specifier;
|
||||
|
||||
- (UIViewController<MFMailComposeViewControllerDelegate>*) settingsViewController:(id<IASKViewController>)settingsViewController
|
||||
viewControllerForMailComposeViewForSpecifier:(IASKSpecifier*) specifier;
|
||||
|
||||
- (void) settingsViewController:(id<IASKViewController>) settingsViewController
|
||||
mailComposeController:(MFMailComposeViewController*)controller
|
||||
didFinishWithResult:(MFMailComposeResult)result
|
||||
error:(NSError*)error;
|
||||
|
||||
#pragma mark - respond to button taps
|
||||
- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForKey:(NSString*)key;
|
||||
- (void)settingsViewController:(IASKAppSettingsViewController*)sender tableView:(UITableView *)tableView didSelectCustomViewSpecifier:(IASKSpecifier*)specifier;
|
||||
@end
|
||||
|
||||
|
||||
@interface IASKAppSettingsViewController : UITableViewController <IASKViewController, UITextFieldDelegate, UINavigationControllerDelegate, MFMailComposeViewControllerDelegate> {
|
||||
id<IASKSettingsDelegate> _delegate;
|
||||
|
||||
NSMutableArray *_viewList;
|
||||
|
||||
IASKSettingsReader *_settingsReader;
|
||||
id<IASKSettingsStore> _settingsStore;
|
||||
NSString *_file;
|
||||
|
||||
id _currentFirstResponder;
|
||||
|
||||
BOOL _showCreditsFooter;
|
||||
BOOL _showDoneButton;
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) IBOutlet id delegate;
|
||||
@property (nonatomic, copy) NSString *file;
|
||||
@property (nonatomic, assign) BOOL showCreditsFooter;
|
||||
@property (nonatomic, assign) BOOL showDoneButton;
|
||||
|
||||
- (void)synchronizeSettings;
|
||||
- (IBAction)dismiss:(id)sender;
|
||||
|
||||
@end
|
||||
798
InAppSettingsKit/Controllers/IASKAppSettingsViewController.m
Normal file
798
InAppSettingsKit/Controllers/IASKAppSettingsViewController.m
Normal file
|
|
@ -0,0 +1,798 @@
|
|||
//
|
||||
// IASKAppSettingsViewController.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009-2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
|
||||
#import "IASKAppSettingsViewController.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
#import "IASKSettingsStoreUserDefaults.h"
|
||||
#import "IASKPSToggleSwitchSpecifierViewCell.h"
|
||||
#import "IASKPSSliderSpecifierViewCell.h"
|
||||
#import "IASKPSTextFieldSpecifierViewCell.h"
|
||||
#import "IASKPSTitleValueSpecifierViewCell.h"
|
||||
#import "IASKSwitch.h"
|
||||
#import "IASKSlider.h"
|
||||
#import "IASKSpecifier.h"
|
||||
#import "IASKSpecifierValuesViewController.h"
|
||||
#import "IASKTextField.h"
|
||||
|
||||
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
|
||||
static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;
|
||||
static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;
|
||||
|
||||
static NSString *kIASKCredits = @"Powered by InAppSettingsKit"; // Leave this as-is!!!
|
||||
|
||||
#define kIASKSpecifierValuesViewControllerIndex 0
|
||||
#define kIASKSpecifierChildViewControllerIndex 1
|
||||
|
||||
#define kIASKCreditsViewWidth 285
|
||||
|
||||
CGRect IASKCGRectSwap(CGRect rect);
|
||||
|
||||
@interface IASKAppSettingsViewController ()
|
||||
@property (nonatomic, retain) NSMutableArray *viewList;
|
||||
@property (nonatomic, retain) id currentFirstResponder;
|
||||
|
||||
- (void) setup;
|
||||
|
||||
- (void)_textChanged:(id)sender;
|
||||
- (void)synchronizeSettings;
|
||||
- (void)userDefaultsDidChange;
|
||||
- (void)reload;
|
||||
@end
|
||||
|
||||
@implementation IASKAppSettingsViewController
|
||||
|
||||
@synthesize delegate = _delegate;
|
||||
@synthesize viewList = _viewList;
|
||||
@synthesize settingsReader = _settingsReader;
|
||||
@synthesize file = _file;
|
||||
@synthesize currentFirstResponder = _currentFirstResponder;
|
||||
@synthesize showCreditsFooter = _showCreditsFooter;
|
||||
@synthesize showDoneButton = _showDoneButton;
|
||||
@synthesize settingsStore = _settingsStore;
|
||||
|
||||
#pragma mark accessors
|
||||
- (IASKSettingsReader*)settingsReader {
|
||||
if (!_settingsReader) {
|
||||
_settingsReader = [[IASKSettingsReader alloc] initWithFile:self.file];
|
||||
}
|
||||
return _settingsReader;
|
||||
}
|
||||
|
||||
- (id<IASKSettingsStore>)settingsStore {
|
||||
if (!_settingsStore) {
|
||||
_settingsStore = [[IASKSettingsStoreUserDefaults alloc] init];
|
||||
}
|
||||
return _settingsStore;
|
||||
}
|
||||
|
||||
- (NSString*)file {
|
||||
if (!_file) {
|
||||
return @"Root";
|
||||
}
|
||||
return [[_file retain] autorelease];
|
||||
}
|
||||
|
||||
- (void)setFile:(NSString *)file {
|
||||
if (file != _file) {
|
||||
|
||||
[_file release];
|
||||
_file = [file copy];
|
||||
}
|
||||
|
||||
self.tableView.contentOffset = CGPointMake(0, 0);
|
||||
self.settingsReader = nil; // automatically initializes itself
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (BOOL)isPad {
|
||||
BOOL isPad = NO;
|
||||
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200)
|
||||
isPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
|
||||
#endif
|
||||
return isPad;
|
||||
}
|
||||
|
||||
#pragma mark standard view controller methods
|
||||
- (id)init {
|
||||
return [self initWithNibName:@"IASKAppSettingsView" bundle:nil];
|
||||
}
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
|
||||
// If set to YES, will add a DONE button at the right of the navigation bar
|
||||
_showDoneButton = YES;
|
||||
|
||||
[self setup];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)awakeFromNib {
|
||||
// If set to YES, will add a DONE button at the right of the navigation bar
|
||||
// if loaded via NIB, it's likely we sit in a TabBar- or NavigationController
|
||||
// and thus don't need the Done button
|
||||
_showDoneButton = NO;
|
||||
|
||||
[self setup];
|
||||
}
|
||||
|
||||
//common (NIB & code based) initialization
|
||||
- (void) setup {
|
||||
// If set to YES, will display credits for InAppSettingsKit creators
|
||||
_showCreditsFooter = YES;
|
||||
}
|
||||
|
||||
- (NSMutableArray *)viewList {
|
||||
if (!_viewList) {
|
||||
_viewList = [[NSMutableArray alloc] init];
|
||||
[_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKSpecifierValuesView", @"ViewName",nil]];
|
||||
[_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKAppSettingsView", @"ViewName",nil]];
|
||||
}
|
||||
return _viewList;
|
||||
}
|
||||
|
||||
- (void) viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
if ([self isPad]) {
|
||||
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewDidUnload {
|
||||
[super viewDidUnload];
|
||||
|
||||
// Release any retained subviews of the main view.
|
||||
// e.g. self.myOutlet = nil;
|
||||
self.view = nil;
|
||||
self.viewList = nil;
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
// if there's something selected, the value might have changed
|
||||
// so reload that row
|
||||
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
|
||||
if(selectedIndexPath) {
|
||||
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:selectedIndexPath]
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
// and reselect it, so we get the nice default deselect animation from UITableViewController
|
||||
[self.tableView selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
|
||||
}
|
||||
|
||||
self.navigationItem.rightBarButtonItem = nil;
|
||||
self.navigationController.delegate = self;
|
||||
if (_showDoneButton) {
|
||||
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
|
||||
target:self
|
||||
action:@selector(dismiss:)];
|
||||
self.navigationItem.rightBarButtonItem = buttonItem;
|
||||
[buttonItem release];
|
||||
}
|
||||
if (!self.title) {
|
||||
self.title = NSLocalizedString(@"Settings", @"");
|
||||
}
|
||||
|
||||
if ([self.settingsStore isKindOfClass:[IASKSettingsStoreUserDefaults class]]) {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(userDefaultsDidChange)
|
||||
name:NSUserDefaultsDidChangeNotification
|
||||
object:[NSUserDefaults standardUserDefaults]];
|
||||
[self userDefaultsDidChange]; // force update in case of changes while we were hidden
|
||||
}
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
|
||||
- (CGSize)contentSizeForViewInPopover {
|
||||
return [[self view] sizeThatFits:CGSizeMake(320, 2000)];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
|
||||
NSNotificationCenter *dc = [NSNotificationCenter defaultCenter];
|
||||
IASK_IF_IOS4_OR_GREATER([dc addObserver:self selector:@selector(synchronizeSettings) name:UIApplicationDidEnterBackgroundNotification object:[UIApplication sharedApplication]];);
|
||||
IASK_IF_IOS4_OR_GREATER([dc addObserver:self selector:@selector(reload) name:UIApplicationWillEnterForegroundNotification object:[UIApplication sharedApplication]];);
|
||||
[dc addObserver:self selector:@selector(synchronizeSettings) name:UIApplicationWillTerminateNotification object:[UIApplication sharedApplication]];
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget:self];
|
||||
[super viewWillDisappear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
|
||||
if (!self.navigationController.delegate) {
|
||||
// hide the keyboard when we're popping from the navigation controller
|
||||
[self.currentFirstResponder resignFirstResponder];
|
||||
}
|
||||
[self dismiss:nil];
|
||||
[super viewDidDisappear:animated];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning {
|
||||
// Releases the view if it doesn't have a superview.
|
||||
[super didReceiveMemoryWarning];
|
||||
|
||||
// Release any cached data, images, etc that aren't in use.
|
||||
}
|
||||
|
||||
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
|
||||
if (![viewController isKindOfClass:[IASKAppSettingsViewController class]] && ![viewController isKindOfClass:[IASKSpecifierValuesViewController class]]) {
|
||||
[self dismiss:nil];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
|
||||
[_viewList release], _viewList = nil;
|
||||
[_file release], _file = nil;
|
||||
[_currentFirstResponder release], _currentFirstResponder = nil;
|
||||
[_settingsReader release], _settingsReader = nil;
|
||||
[_settingsStore release], _settingsStore = nil;
|
||||
|
||||
_delegate = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Actions
|
||||
|
||||
- (IBAction)dismiss:(id)sender {
|
||||
[self.settingsStore synchronize];
|
||||
self.navigationController.delegate = nil;
|
||||
|
||||
if (self.delegate && [self.delegate conformsToProtocol:@protocol(IASKSettingsDelegate)]) {
|
||||
[self.delegate settingsViewControllerDidEnd:self];
|
||||
}
|
||||
// reload
|
||||
[self.settingsReader initWithFile:self.file];
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)toggledValue:(id)sender {
|
||||
IASKSwitch *toggle = (IASKSwitch*)sender;
|
||||
IASKSpecifier *spec = [_settingsReader specifierForKey:[toggle key]];
|
||||
|
||||
if ([toggle isOn]) {
|
||||
if ([spec trueValue] != nil) {
|
||||
[self.settingsStore setObject:[spec trueValue] forKey:[toggle key]];
|
||||
}
|
||||
else {
|
||||
[self.settingsStore setBool:YES forKey:[toggle key]];
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ([spec falseValue] != nil) {
|
||||
[self.settingsStore setObject:[spec falseValue] forKey:[toggle key]];
|
||||
}
|
||||
else {
|
||||
[self.settingsStore setBool:NO forKey:[toggle key]];
|
||||
}
|
||||
}
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged
|
||||
object:[toggle key]
|
||||
userInfo:[NSDictionary dictionaryWithObject:[self.settingsStore objectForKey:[toggle key]]
|
||||
forKey:[toggle key]]];
|
||||
}
|
||||
|
||||
- (void)sliderChangedValue:(id)sender {
|
||||
IASKSlider *slider = (IASKSlider*)sender;
|
||||
[self.settingsStore setFloat:[slider value] forKey:[slider key]];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged
|
||||
object:[slider key]
|
||||
userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:[slider value]]
|
||||
forKey:[slider key]]];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark UITableView Functions
|
||||
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return [self.settingsReader numberOfSections];
|
||||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return [self.settingsReader numberOfRowsForSection:section];
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath];
|
||||
if ([[specifier type] isEqualToString:kIASKCustomViewSpecifier]) {
|
||||
if ([self.delegate respondsToSelector:@selector(tableView:heightForSpecifier:)]) {
|
||||
return [self.delegate tableView:tableView heightForSpecifier:specifier];
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return tableView.rowHeight;
|
||||
}
|
||||
|
||||
- (NSString *)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section {
|
||||
NSString *header = [self.settingsReader titleForSection:section];
|
||||
if (0 == header.length) {
|
||||
return nil;
|
||||
}
|
||||
return header;
|
||||
}
|
||||
|
||||
- (UIView *)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section {
|
||||
if ([self.delegate respondsToSelector:@selector(settingsViewController:tableView:viewForHeaderForSection:)]) {
|
||||
return [self.delegate settingsViewController:self tableView:tableView viewForHeaderForSection:section];
|
||||
} else {
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section {
|
||||
if ([self tableView:tableView viewForHeaderInSection:section] && [self.delegate respondsToSelector:@selector(settingsViewController:tableView:heightForHeaderForSection:)]) {
|
||||
CGFloat result;
|
||||
if ((result = [self.delegate settingsViewController:self tableView:tableView heightForHeaderForSection:section])) {
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
NSString *title;
|
||||
if ((title = [self tableView:tableView titleForHeaderInSection:section])) {
|
||||
CGSize size = [title sizeWithFont:[UIFont boldSystemFontOfSize:[UIFont labelFontSize]]
|
||||
constrainedToSize:CGSizeMake(tableView.frame.size.width - 2*kIASKHorizontalPaddingGroupTitles, INFINITY)
|
||||
lineBreakMode:UILineBreakModeWordWrap];
|
||||
return size.height+kIASKVerticalPaddingGroupTitles;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
|
||||
{
|
||||
NSString *footerText = [self.settingsReader footerTextForSection:section];
|
||||
if (_showCreditsFooter && (section == [self.settingsReader numberOfSections]-1)) {
|
||||
// show credits since this is the last section
|
||||
if ((footerText == nil) || ([footerText length] == 0)) {
|
||||
// show the credits on their own
|
||||
return kIASKCredits;
|
||||
} else {
|
||||
// show the credits below the app's FooterText
|
||||
return [NSString stringWithFormat:@"%@\n\n%@", footerText, kIASKCredits];
|
||||
}
|
||||
} else {
|
||||
if ([footerText length] == 0) {
|
||||
return nil;
|
||||
}
|
||||
return [self.settingsReader footerTextForSection:section];
|
||||
}
|
||||
}
|
||||
|
||||
- (UITableViewCell*)dequeueReusableCellWithIdentifier:(NSString*)identifier {
|
||||
UITableViewCell *cell = nil;
|
||||
if ([identifier isEqualToString:kIASKPSToggleSwitchSpecifier]) {
|
||||
cell = [[[NSBundle mainBundle] loadNibNamed:@"IASKPSToggleSwitchSpecifierViewCell"
|
||||
owner:self
|
||||
options:nil] objectAtIndex:0];
|
||||
}
|
||||
else if ([identifier isEqualToString:kIASKPSMultiValueSpecifier] || [identifier isEqualToString:kIASKPSTitleValueSpecifier]) {
|
||||
cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease];
|
||||
cell.accessoryType = [identifier isEqualToString:kIASKPSMultiValueSpecifier] ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone;
|
||||
}
|
||||
else if ([identifier isEqualToString:kIASKPSTextFieldSpecifier]) {
|
||||
cell = (IASKPSTextFieldSpecifierViewCell*) [[[NSBundle mainBundle] loadNibNamed:@"IASKPSTextFieldSpecifierViewCell"
|
||||
owner:self
|
||||
options:nil] objectAtIndex:0];
|
||||
}
|
||||
else if ([identifier isEqualToString:kIASKPSSliderSpecifier]) {
|
||||
cell = (IASKPSSliderSpecifierViewCell*) [[[NSBundle mainBundle] loadNibNamed:@"IASKPSSliderSpecifierViewCell"
|
||||
owner:self
|
||||
options:nil] objectAtIndex:0];
|
||||
} else if ([identifier isEqualToString:kIASKPSChildPaneSpecifier]) {
|
||||
cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease];
|
||||
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
|
||||
} else if ([identifier isEqualToString:kIASKButtonSpecifier]) {
|
||||
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
|
||||
} else if ([identifier isEqualToString:kIASKMailComposeSpecifier]) {
|
||||
cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease];
|
||||
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
|
||||
} else {
|
||||
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath];
|
||||
if ([specifier.type isEqualToString:kIASKCustomViewSpecifier] && [self.delegate respondsToSelector:@selector(tableView:cellForSpecifier:)]) {
|
||||
UITableViewCell* cell = [self.delegate tableView:tableView cellForSpecifier:specifier];
|
||||
assert(nil != cell && "delegate must return a UITableViewCell for custom cell types");
|
||||
return cell;
|
||||
}
|
||||
|
||||
UITableViewCell *cell = [self dequeueReusableCellWithIdentifier:specifier.type];
|
||||
|
||||
if ([specifier.type isEqualToString:kIASKPSToggleSwitchSpecifier]) {
|
||||
((IASKPSToggleSwitchSpecifierViewCell*)cell).label.text = specifier.title;
|
||||
|
||||
id currentValue = [self.settingsStore objectForKey:specifier.key];
|
||||
BOOL toggleState;
|
||||
if (currentValue) {
|
||||
if ([currentValue isEqual:specifier.trueValue]) {
|
||||
toggleState = YES;
|
||||
} else if ([currentValue isEqual:specifier.falseValue]) {
|
||||
toggleState = NO;
|
||||
} else {
|
||||
toggleState = [currentValue boolValue];
|
||||
}
|
||||
} else {
|
||||
toggleState = specifier.defaultBoolValue;
|
||||
}
|
||||
((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle.on = toggleState;
|
||||
|
||||
[((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged];
|
||||
((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle.key = specifier.key;
|
||||
}
|
||||
else if ([specifier.type isEqualToString:kIASKPSMultiValueSpecifier]) {
|
||||
cell.textLabel.text = specifier.title;
|
||||
cell.detailTextLabel.text = [[specifier titleForCurrentValue:[self.settingsStore objectForKey:specifier.key] != nil ?
|
||||
[self.settingsStore objectForKey:specifier.key] : specifier.defaultValue] description];
|
||||
}
|
||||
else if ([specifier.type isEqualToString:kIASKPSTitleValueSpecifier]) {
|
||||
cell.textLabel.text = specifier.title;
|
||||
id value = [self.settingsStore objectForKey:specifier.key] ? : specifier.defaultValue;
|
||||
|
||||
NSString *stringValue;
|
||||
if (specifier.multipleValues || specifier.multipleTitles) {
|
||||
stringValue = [specifier titleForCurrentValue:value];
|
||||
} else {
|
||||
stringValue = [value description];
|
||||
}
|
||||
|
||||
cell.detailTextLabel.text = stringValue;
|
||||
cell.userInteractionEnabled = NO;
|
||||
}
|
||||
else if ([specifier.type isEqualToString:kIASKPSTextFieldSpecifier]) {
|
||||
((IASKPSTextFieldSpecifierViewCell*)cell).label.text = specifier.title;
|
||||
|
||||
NSString *textValue = [self.settingsStore objectForKey:specifier.key] != nil ? [self.settingsStore objectForKey:specifier.key] : specifier.defaultStringValue;
|
||||
if (textValue && ![textValue isMemberOfClass:[NSString class]]) {
|
||||
textValue = [NSString stringWithFormat:@"%@", textValue];
|
||||
}
|
||||
IASKTextField *textField = ((IASKPSTextFieldSpecifierViewCell*)cell).textField;
|
||||
textField.text = textValue;
|
||||
textField.key = specifier.key;
|
||||
textField.delegate = self;
|
||||
textField.secureTextEntry = [specifier isSecure];
|
||||
textField.keyboardType = specifier.keyboardType;
|
||||
textField.autocapitalizationType = specifier.autocapitalizationType;
|
||||
[textField addTarget:self action:@selector(_textChanged:) forControlEvents:UIControlEventEditingChanged];
|
||||
if([specifier isSecure]){
|
||||
textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
} else {
|
||||
textField.autocorrectionType = specifier.autoCorrectionType;
|
||||
}
|
||||
[cell setNeedsLayout];
|
||||
}
|
||||
else if ([specifier.type isEqualToString:kIASKPSSliderSpecifier]) {
|
||||
if (specifier.minimumValueImage.length > 0) {
|
||||
((IASKPSSliderSpecifierViewCell*)cell).minImage.image = [UIImage imageWithContentsOfFile:[_settingsReader pathForImageNamed:specifier.minimumValueImage]];
|
||||
}
|
||||
|
||||
if (specifier.maximumValueImage.length > 0) {
|
||||
((IASKPSSliderSpecifierViewCell*)cell).maxImage.image = [UIImage imageWithContentsOfFile:[_settingsReader pathForImageNamed:specifier.maximumValueImage]];
|
||||
}
|
||||
|
||||
IASKSlider *slider = ((IASKPSSliderSpecifierViewCell*)cell).slider;
|
||||
slider.minimumValue = specifier.minimumValue;
|
||||
slider.maximumValue = specifier.maximumValue;
|
||||
slider.value = [self.settingsStore objectForKey:specifier.key] != nil ? [[self.settingsStore objectForKey:specifier.key] floatValue] : [specifier.defaultValue floatValue];
|
||||
[slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
|
||||
slider.key = specifier.key;
|
||||
[cell setNeedsLayout];
|
||||
}
|
||||
else if ([specifier.type isEqualToString:kIASKPSChildPaneSpecifier]) {
|
||||
cell.textLabel.text = specifier.title;
|
||||
} else if ([specifier.type isEqualToString:kIASKOpenURLSpecifier] || [specifier.type isEqualToString:kIASKMailComposeSpecifier]) {
|
||||
cell.textLabel.text = specifier.title;
|
||||
cell.detailTextLabel.text = [specifier.defaultValue description];
|
||||
} else if ([specifier.type isEqualToString:kIASKButtonSpecifier]) {
|
||||
NSString *value = [self.settingsStore objectForKey:specifier.key];
|
||||
cell.textLabel.text = [value isKindOfClass:[NSString class]] ? [self.settingsReader titleForStringId:value] : specifier.title;
|
||||
cell.textLabel.textAlignment = UITextAlignmentCenter;
|
||||
} else {
|
||||
cell.textLabel.text = specifier.title;
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
//create a set of specifier types that can't be selected
|
||||
static NSSet* noSelectionTypes = nil;
|
||||
if(nil == noSelectionTypes) {
|
||||
noSelectionTypes = [[NSSet setWithObjects:kIASKPSToggleSwitchSpecifier, kIASKPSSliderSpecifier, nil] retain];
|
||||
}
|
||||
|
||||
IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath];
|
||||
if([noSelectionTypes containsObject:specifier.type]) {
|
||||
return nil;
|
||||
} else {
|
||||
return indexPath;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath];
|
||||
|
||||
//switches and sliders can't be selected (should be captured by tableView:willSelectRowAtIndexPath: delegate method)
|
||||
assert(![[specifier type] isEqualToString:kIASKPSToggleSwitchSpecifier]);
|
||||
assert(![[specifier type] isEqualToString:kIASKPSSliderSpecifier]);
|
||||
|
||||
if ([[specifier type] isEqualToString:kIASKPSMultiValueSpecifier]) {
|
||||
IASKSpecifierValuesViewController *targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex] objectForKey:@"viewController"];
|
||||
|
||||
if (targetViewController == nil) {
|
||||
// the view controller has not been created yet, create it and set it to our viewList array
|
||||
// create a new dictionary with the new view controller
|
||||
NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3];
|
||||
[newItemDict addEntriesFromDictionary: [self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex]]; // copy the title and explain strings
|
||||
|
||||
targetViewController = [[IASKSpecifierValuesViewController alloc] initWithNibName:@"IASKSpecifierValuesView" bundle:nil];
|
||||
// add the new view controller to the dictionary and then to the 'viewList' array
|
||||
[newItemDict setObject:targetViewController forKey:@"viewController"];
|
||||
[self.viewList replaceObjectAtIndex:kIASKSpecifierValuesViewControllerIndex withObject:newItemDict];
|
||||
[targetViewController release];
|
||||
|
||||
// load the view controll back in to push it
|
||||
targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex] objectForKey:@"viewController"];
|
||||
}
|
||||
[targetViewController setCurrentSpecifier:specifier];
|
||||
targetViewController.settingsReader = self.settingsReader;
|
||||
targetViewController.settingsStore = self.settingsStore;
|
||||
[[self navigationController] pushViewController:targetViewController animated:YES];
|
||||
}
|
||||
else if ([[specifier type] isEqualToString:kIASKPSTextFieldSpecifier]) {
|
||||
IASKPSTextFieldSpecifierViewCell *textFieldCell = (id)[tableView cellForRowAtIndexPath:indexPath];
|
||||
[textFieldCell.textField becomeFirstResponder];
|
||||
}
|
||||
else if ([[specifier type] isEqualToString:kIASKPSChildPaneSpecifier]) {
|
||||
|
||||
|
||||
Class vcClass = [specifier viewControllerClass];
|
||||
if (vcClass) {
|
||||
SEL initSelector = [specifier viewControllerSelector];
|
||||
if (!initSelector) {
|
||||
initSelector = @selector(init);
|
||||
}
|
||||
UIViewController * vc = [vcClass performSelector:@selector(alloc)];
|
||||
[vc performSelector:initSelector withObject:[specifier file] withObject:[specifier key]];
|
||||
if ([vc respondsToSelector:@selector(setDelegate:)]) {
|
||||
[vc performSelector:@selector(setDelegate:) withObject:self.delegate];
|
||||
}
|
||||
if ([vc respondsToSelector:@selector(setSettingsStore:)]) {
|
||||
[vc performSelector:@selector(setSettingsStore:) withObject:self.settingsStore];
|
||||
}
|
||||
self.navigationController.delegate = nil;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
[vc performSelector:@selector(release)];
|
||||
return;
|
||||
}
|
||||
|
||||
if (nil == [specifier file]) {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
return;
|
||||
}
|
||||
|
||||
IASKAppSettingsViewController *targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"];
|
||||
|
||||
if (targetViewController == nil) {
|
||||
// the view controller has not been created yet, create it and set it to our viewList array
|
||||
// create a new dictionary with the new view controller
|
||||
NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3];
|
||||
[newItemDict addEntriesFromDictionary: [self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex]]; // copy the title and explain strings
|
||||
|
||||
targetViewController = [[[self class] alloc] initWithNibName:@"IASKAppSettingsView" bundle:nil];
|
||||
targetViewController.showDoneButton = NO;
|
||||
targetViewController.settingsStore = self.settingsStore;
|
||||
targetViewController.delegate = self.delegate;
|
||||
|
||||
// add the new view controller to the dictionary and then to the 'viewList' array
|
||||
[newItemDict setObject:targetViewController forKey:@"viewController"];
|
||||
[self.viewList replaceObjectAtIndex:kIASKSpecifierChildViewControllerIndex withObject:newItemDict];
|
||||
[targetViewController release];
|
||||
|
||||
// load the view controll back in to push it
|
||||
targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"];
|
||||
}
|
||||
targetViewController.file = specifier.file; // changes settingsReader
|
||||
targetViewController.settingsReader.delegate = self.settingsReader.delegate;
|
||||
[targetViewController.settingsReader initWithFile:specifier.file];
|
||||
targetViewController.title = specifier.title;
|
||||
targetViewController.showCreditsFooter = NO;
|
||||
[[self navigationController] pushViewController:targetViewController animated:YES];
|
||||
} else if ([[specifier type] isEqualToString:kIASKOpenURLSpecifier]) {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:specifier.file]];
|
||||
} else if ([[specifier type] isEqualToString:kIASKButtonSpecifier]) {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
if ([self.delegate respondsToSelector:@selector(settingsViewController:buttonTappedForKey:)]) {
|
||||
[self.delegate settingsViewController:self buttonTappedForKey:[specifier key]];
|
||||
} else {
|
||||
// legacy code, provided for backward compatibility
|
||||
// the delegate mechanism above is much cleaner and doesn't leak
|
||||
Class buttonClass = [specifier buttonClass];
|
||||
SEL buttonAction = [specifier buttonAction];
|
||||
if ([buttonClass respondsToSelector:buttonAction]) {
|
||||
[buttonClass performSelector:buttonAction withObject:self withObject:[specifier key]];
|
||||
NSLog(@"InAppSettingsKit Warning: Using IASKButtonSpecifier without implementing the delegate method is deprecated");
|
||||
}
|
||||
}
|
||||
} else if ([[specifier type] isEqualToString:kIASKMailComposeSpecifier]) {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
if ([MFMailComposeViewController canSendMail]) {
|
||||
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
|
||||
mailViewController.navigationBar.barStyle = self.navigationController.navigationBar.barStyle;
|
||||
mailViewController.navigationBar.tintColor = self.navigationController.navigationBar.tintColor;
|
||||
|
||||
if ([specifier localizedObjectForKey:kIASKMailComposeSubject]) {
|
||||
[mailViewController setSubject:[specifier localizedObjectForKey:kIASKMailComposeSubject]];
|
||||
}
|
||||
if ([[specifier specifierDict] objectForKey:kIASKMailComposeToRecipents]) {
|
||||
[mailViewController setToRecipients:[[specifier specifierDict] objectForKey:kIASKMailComposeToRecipents]];
|
||||
}
|
||||
if ([[specifier specifierDict] objectForKey:kIASKMailComposeCcRecipents]) {
|
||||
[mailViewController setCcRecipients:[[specifier specifierDict] objectForKey:kIASKMailComposeCcRecipents]];
|
||||
}
|
||||
if ([[specifier specifierDict] objectForKey:kIASKMailComposeBccRecipents]) {
|
||||
[mailViewController setBccRecipients:[[specifier specifierDict] objectForKey:kIASKMailComposeBccRecipents]];
|
||||
}
|
||||
if ([specifier localizedObjectForKey:kIASKMailComposeBody]) {
|
||||
BOOL isHTML = NO;
|
||||
if ([[specifier specifierDict] objectForKey:kIASKMailComposeBodyIsHTML]) {
|
||||
isHTML = [[[specifier specifierDict] objectForKey:kIASKMailComposeBodyIsHTML] boolValue];
|
||||
}
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(settingsViewController:mailComposeBodyForSpecifier:)]) {
|
||||
[mailViewController setMessageBody:[self.delegate settingsViewController:self
|
||||
mailComposeBodyForSpecifier:specifier] isHTML:isHTML];
|
||||
}
|
||||
else {
|
||||
[mailViewController setMessageBody:[specifier localizedObjectForKey:kIASKMailComposeBody] isHTML:isHTML];
|
||||
}
|
||||
}
|
||||
|
||||
UIViewController<MFMailComposeViewControllerDelegate> *vc = nil;
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(settingsViewController:viewControllerForMailComposeViewForSpecifier:)]) {
|
||||
vc = [self.delegate settingsViewController:self viewControllerForMailComposeViewForSpecifier:specifier];
|
||||
}
|
||||
|
||||
if (vc == nil) {
|
||||
vc = self;
|
||||
}
|
||||
|
||||
mailViewController.mailComposeDelegate = vc;
|
||||
[vc presentModalViewController:mailViewController animated:YES];
|
||||
[mailViewController release];
|
||||
} else {
|
||||
UIAlertView *alert = [[UIAlertView alloc]
|
||||
initWithTitle:NSLocalizedString(@"Mail not configured", @"InAppSettingsKit")
|
||||
message:NSLocalizedString(@"This device is not configured for sending Email. Please configure the Mail settings in the Settings app.", @"InAppSettingsKit")
|
||||
delegate: nil
|
||||
cancelButtonTitle:NSLocalizedString(@"OK", @"InAppSettingsKit")
|
||||
otherButtonTitles:nil];
|
||||
[alert show];
|
||||
[alert release];
|
||||
}
|
||||
|
||||
} else if ([[specifier type] isEqualToString:kIASKCustomViewSpecifier] && [self.delegate respondsToSelector:@selector(settingsViewController:tableView:didSelectCustomViewSpecifier:)]) {
|
||||
[self.delegate settingsViewController:self tableView:tableView didSelectCustomViewSpecifier:specifier];
|
||||
} else {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:NO];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark MFMailComposeViewControllerDelegate Function
|
||||
|
||||
-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
|
||||
|
||||
// Forward the mail compose delegate
|
||||
if ([self.delegate respondsToSelector:@selector(settingsViewController:mailComposeController:didFinishWithResult:error:)]) {
|
||||
[self.delegate settingsViewController:self
|
||||
mailComposeController:controller
|
||||
didFinishWithResult:result
|
||||
error:error];
|
||||
}
|
||||
|
||||
// NOTE: No error handling is done here
|
||||
[self dismissModalViewControllerAnimated:YES];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark UITextFieldDelegate Functions
|
||||
|
||||
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
|
||||
self.currentFirstResponder = textField;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)_textChanged:(id)sender {
|
||||
IASKTextField *text = (IASKTextField*)sender;
|
||||
[_settingsStore setObject:[text text] forKey:[text key]];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged
|
||||
object:[text key]
|
||||
userInfo:[NSDictionary dictionaryWithObject:[text text]
|
||||
forKey:[text key]]];
|
||||
}
|
||||
|
||||
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
|
||||
[textField resignFirstResponder];
|
||||
self.currentFirstResponder = nil;
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Notifications
|
||||
|
||||
- (void)synchronizeSettings {
|
||||
[_settingsStore synchronize];
|
||||
}
|
||||
|
||||
static NSDictionary *oldUserDefaults = nil;
|
||||
- (void)userDefaultsDidChange {
|
||||
NSDictionary *currentDict = [NSUserDefaults standardUserDefaults].dictionaryRepresentation;
|
||||
NSMutableArray *indexPathsToUpdate = [NSMutableArray array];
|
||||
for (NSString *key in currentDict.allKeys) {
|
||||
if (![[oldUserDefaults valueForKey:key] isEqual:[currentDict valueForKey:key]]) {
|
||||
NSIndexPath *path = [self.settingsReader indexPathForKey:key];
|
||||
if (path && ![[self.settingsReader specifierForKey:key].type isEqualToString:kIASKCustomViewSpecifier]) {
|
||||
[indexPathsToUpdate addObject:path];
|
||||
}
|
||||
}
|
||||
}
|
||||
[oldUserDefaults release], oldUserDefaults = [currentDict retain];
|
||||
|
||||
|
||||
for (UITableViewCell *cell in self.tableView.visibleCells) {
|
||||
if ([cell isKindOfClass:[IASKPSTextFieldSpecifierViewCell class]] && [((IASKPSTextFieldSpecifierViewCell*)cell).textField isFirstResponder]) {
|
||||
[indexPathsToUpdate removeObject:[self.tableView indexPathForCell:cell]];
|
||||
}
|
||||
}
|
||||
if (indexPathsToUpdate.count) {
|
||||
[self.tableView reloadRowsAtIndexPaths:indexPathsToUpdate withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)reload {
|
||||
// wait 0.5 sec until UI is available after applicationWillEnterForeground
|
||||
[self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.5];
|
||||
}
|
||||
|
||||
#pragma mark CGRect Utility function
|
||||
CGRect IASKCGRectSwap(CGRect rect) {
|
||||
CGRect newRect;
|
||||
newRect.origin.x = rect.origin.y;
|
||||
newRect.origin.y = rect.origin.x;
|
||||
newRect.size.width = rect.size.height;
|
||||
newRect.size.height = rect.size.width;
|
||||
return newRect;
|
||||
}
|
||||
@end
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
//
|
||||
// IASKAppSettingsWebViewController.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <MessageUI/MessageUI.h>
|
||||
|
||||
@interface IASKAppSettingsWebViewController : UIViewController <UIWebViewDelegate, MFMailComposeViewControllerDelegate> {
|
||||
UIWebView *webView;
|
||||
NSURL *url;
|
||||
}
|
||||
|
||||
- (id)initWithFile:(NSString*)htmlFileName key:(NSString*)key;
|
||||
|
||||
@property (nonatomic, retain) IBOutlet UIWebView *webView;
|
||||
@property (nonatomic, retain) NSURL *url;
|
||||
|
||||
@end
|
||||
148
InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m
Normal file
148
InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
//
|
||||
// IASKAppSettingsWebViewController.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKAppSettingsWebViewController.h"
|
||||
|
||||
@implementation IASKAppSettingsWebViewController
|
||||
|
||||
@synthesize url;
|
||||
@synthesize webView;
|
||||
|
||||
- (id)initWithFile:(NSString*)urlString key:(NSString*)key {
|
||||
if (!(self = [super initWithNibName:nil bundle:nil])) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
self.url = [NSURL URLWithString:urlString];
|
||||
if (!self.url || ![self.url scheme]) {
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:[urlString stringByDeletingPathExtension] ofType:[urlString pathExtension]];
|
||||
if(path)
|
||||
self.url = [NSURL fileURLWithPath:path];
|
||||
else
|
||||
self.url = nil;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[webView release], webView = nil;
|
||||
[url release], url = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[webView loadRequest:[NSURLRequest requestWithURL:self.url]];
|
||||
}
|
||||
|
||||
- (void)viewDidUnload {
|
||||
[super viewDidUnload];
|
||||
self.webView = nil;
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)webViewDidFinishLoad:(UIWebView *)webView {
|
||||
self.navigationItem.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];
|
||||
}
|
||||
|
||||
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
|
||||
NSURL *newURL = [request URL];
|
||||
|
||||
// intercept mailto URL and send it to an in-app Mail compose view instead
|
||||
if ([[newURL scheme] isEqualToString:@"mailto"]) {
|
||||
|
||||
NSArray *rawURLparts = [[newURL resourceSpecifier] componentsSeparatedByString:@"?"];
|
||||
if (rawURLparts.count > 2) {
|
||||
return NO; // invalid URL
|
||||
}
|
||||
|
||||
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
|
||||
mailViewController.mailComposeDelegate = self;
|
||||
|
||||
NSMutableArray *toRecipients = [NSMutableArray array];
|
||||
NSString *defaultRecipient = [rawURLparts objectAtIndex:0];
|
||||
if (defaultRecipient.length) {
|
||||
[toRecipients addObject:defaultRecipient];
|
||||
}
|
||||
|
||||
if (rawURLparts.count == 2) {
|
||||
NSString *queryString = [rawURLparts objectAtIndex:1];
|
||||
|
||||
NSArray *params = [queryString componentsSeparatedByString:@"&"];
|
||||
for (NSString *param in params) {
|
||||
NSArray *keyValue = [param componentsSeparatedByString:@"="];
|
||||
if (keyValue.count != 2) {
|
||||
continue;
|
||||
}
|
||||
NSString *key = [[keyValue objectAtIndex:0] lowercaseString];
|
||||
NSString *value = [keyValue objectAtIndex:1];
|
||||
|
||||
value = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
|
||||
(CFStringRef)value,
|
||||
CFSTR(""),
|
||||
kCFStringEncodingUTF8);
|
||||
[value autorelease];
|
||||
|
||||
if ([key isEqualToString:@"subject"]) {
|
||||
[mailViewController setSubject:value];
|
||||
}
|
||||
|
||||
if ([key isEqualToString:@"body"]) {
|
||||
[mailViewController setMessageBody:value isHTML:NO];
|
||||
}
|
||||
|
||||
if ([key isEqualToString:@"to"]) {
|
||||
[toRecipients addObjectsFromArray:[value componentsSeparatedByString:@","]];
|
||||
}
|
||||
|
||||
if ([key isEqualToString:@"cc"]) {
|
||||
NSArray *recipients = [value componentsSeparatedByString:@","];
|
||||
[mailViewController setCcRecipients:recipients];
|
||||
}
|
||||
|
||||
if ([key isEqualToString:@"bcc"]) {
|
||||
NSArray *recipients = [value componentsSeparatedByString:@","];
|
||||
[mailViewController setBccRecipients:recipients];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[mailViewController setToRecipients:toRecipients];
|
||||
|
||||
[self presentModalViewController:mailViewController animated:YES];
|
||||
[mailViewController release];
|
||||
return NO;
|
||||
}
|
||||
|
||||
// open inline if host is the same, otherwise, pass to the system
|
||||
if (![newURL host] || [[newURL host] isEqualToString:[self.url host]]) {
|
||||
return YES;
|
||||
}
|
||||
[[UIApplication sharedApplication] openURL:newURL];
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
|
||||
[self dismissModalViewControllerAnimated:YES];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
//
|
||||
// IASKSpecifierValuesViewController.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "IASKSettingsStore.h"
|
||||
#import "IASKViewController.h"
|
||||
@class IASKSpecifier;
|
||||
@class IASKSettingsReader;
|
||||
|
||||
@interface IASKSpecifierValuesViewController : UIViewController<IASKViewController> {
|
||||
UITableView *_tableView;
|
||||
|
||||
IASKSpecifier *_currentSpecifier;
|
||||
NSIndexPath *_checkedItem;
|
||||
IASKSettingsReader *_settingsReader;
|
||||
id<IASKSettingsStore> _settingsStore;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) IBOutlet UITableView *tableView;
|
||||
@property (nonatomic, retain) NSIndexPath *checkedItem;
|
||||
@property (nonatomic, retain) IASKSpecifier *currentSpecifier;
|
||||
|
||||
@end
|
||||
195
InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m
Normal file
195
InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
//
|
||||
// IASKSpecifierValuesViewController.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSpecifierValuesViewController.h"
|
||||
#import "IASKSpecifier.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
#import "IASKSettingsStoreUserDefaults.h"
|
||||
|
||||
#define kCellValue @"kCellValue"
|
||||
|
||||
@interface IASKSpecifierValuesViewController()
|
||||
- (void)userDefaultsDidChange;
|
||||
@end
|
||||
|
||||
@implementation IASKSpecifierValuesViewController
|
||||
|
||||
@synthesize tableView=_tableView;
|
||||
@synthesize currentSpecifier=_currentSpecifier;
|
||||
@synthesize checkedItem=_checkedItem;
|
||||
@synthesize settingsReader = _settingsReader;
|
||||
@synthesize settingsStore = _settingsStore;
|
||||
|
||||
- (void) updateCheckedItem {
|
||||
NSInteger index;
|
||||
|
||||
// Find the currently checked item
|
||||
if([self.settingsStore objectForKey:[_currentSpecifier key]]) {
|
||||
index = [[_currentSpecifier multipleValues] indexOfObject:[self.settingsStore objectForKey:[_currentSpecifier key]]];
|
||||
} else {
|
||||
index = [[_currentSpecifier multipleValues] indexOfObject:[_currentSpecifier defaultValue]];
|
||||
}
|
||||
[self setCheckedItem:[NSIndexPath indexPathForRow:index inSection:0]];
|
||||
}
|
||||
|
||||
- (id<IASKSettingsStore>)settingsStore {
|
||||
if(_settingsStore == nil) {
|
||||
_settingsStore = [[IASKSettingsStoreUserDefaults alloc] init];
|
||||
}
|
||||
return _settingsStore;
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
if (_currentSpecifier) {
|
||||
[self setTitle:[_currentSpecifier title]];
|
||||
[self updateCheckedItem];
|
||||
}
|
||||
|
||||
if (_tableView) {
|
||||
[_tableView reloadData];
|
||||
|
||||
// Make sure the currently checked item is visible
|
||||
[_tableView scrollToRowAtIndexPath:[self checkedItem] atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
|
||||
}
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[_tableView flashScrollIndicators];
|
||||
[super viewDidAppear:animated];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(userDefaultsDidChange)
|
||||
name:NSUserDefaultsDidChangeNotification
|
||||
object:[NSUserDefaults standardUserDefaults]];
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSUserDefaultsDidChangeNotification object:nil];
|
||||
[super viewDidDisappear:animated];
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning {
|
||||
// Releases the view if it doesn't have a superview.
|
||||
[super didReceiveMemoryWarning];
|
||||
|
||||
// Release any cached data, images, etc that aren't in use.
|
||||
}
|
||||
|
||||
- (void)viewDidUnload {
|
||||
// Release any retained subviews of the main view.
|
||||
// e.g. self.myOutlet = nil;
|
||||
self.tableView = nil;
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[_currentSpecifier release], _currentSpecifier = nil;
|
||||
[_checkedItem release], _checkedItem = nil;
|
||||
[_settingsReader release], _settingsReader = nil;
|
||||
[_settingsStore release], _settingsStore = nil;
|
||||
[_tableView release], _tableView = nil;
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark UITableView delegates
|
||||
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return 1;
|
||||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return [_currentSpecifier multipleValuesCount];
|
||||
}
|
||||
|
||||
- (void)selectCell:(UITableViewCell *)cell {
|
||||
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
|
||||
[[cell textLabel] setTextColor:kIASKgrayBlueColor];
|
||||
}
|
||||
|
||||
- (void)deselectCell:(UITableViewCell *)cell {
|
||||
[cell setAccessoryType:UITableViewCellAccessoryNone];
|
||||
[[cell textLabel] setTextColor:[UIColor darkTextColor]];
|
||||
}
|
||||
|
||||
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
|
||||
return [_currentSpecifier footerText];
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellValue];
|
||||
NSArray *titles = [_currentSpecifier multipleTitles];
|
||||
|
||||
if (!cell) {
|
||||
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellValue] autorelease];
|
||||
}
|
||||
|
||||
if ([indexPath isEqual:[self checkedItem]]) {
|
||||
[self selectCell:cell];
|
||||
} else {
|
||||
[self deselectCell:cell];
|
||||
}
|
||||
|
||||
@try {
|
||||
[[cell textLabel] setText:[self.settingsReader titleForStringId:[titles objectAtIndex:indexPath.row]]];
|
||||
}
|
||||
@catch (NSException * e) {}
|
||||
return cell;
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
||||
if (indexPath == [self checkedItem]) {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
return;
|
||||
}
|
||||
|
||||
NSArray *values = [_currentSpecifier multipleValues];
|
||||
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
[self deselectCell:[tableView cellForRowAtIndexPath:[self checkedItem]]];
|
||||
[self selectCell:[tableView cellForRowAtIndexPath:indexPath]];
|
||||
[self setCheckedItem:indexPath];
|
||||
|
||||
[self.settingsStore setObject:[values objectAtIndex:indexPath.row] forKey:[_currentSpecifier key]];
|
||||
[self.settingsStore synchronize];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged
|
||||
object:[_currentSpecifier key]
|
||||
userInfo:[NSDictionary dictionaryWithObject:[values objectAtIndex:indexPath.row]
|
||||
forKey:[_currentSpecifier key]]];
|
||||
}
|
||||
|
||||
#pragma mark Notifications
|
||||
|
||||
- (void)userDefaultsDidChange {
|
||||
NSIndexPath *oldCheckedItem = [[self.checkedItem retain] autorelease];
|
||||
if(_currentSpecifier) {
|
||||
[self updateCheckedItem];
|
||||
}
|
||||
|
||||
// only reload the table if it had changed; prevents animation cancellation
|
||||
if (![self.checkedItem isEqual:oldCheckedItem]) {
|
||||
[_tableView reloadData];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
26
InAppSettingsKit/Controllers/IASKViewController.h
Normal file
26
InAppSettingsKit/Controllers/IASKViewController.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// IASKAppSettingsViewController.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
@class IASKSettingsReader;
|
||||
@protocol IASKSettingsStore;
|
||||
|
||||
// protocol all IASK view controllers implement
|
||||
@protocol IASKViewController <NSObject>
|
||||
|
||||
@property (nonatomic, retain) IASKSettingsReader* settingsReader;
|
||||
@property (nonatomic, retain) id<IASKSettingsStore> settingsStore;
|
||||
|
||||
@end
|
||||
149
InAppSettingsKit/Models/IASKSettingsReader.h
Normal file
149
InAppSettingsKit/Models/IASKSettingsReader.h
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
//
|
||||
// IASKSettingsReader.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define kIASKPreferenceSpecifiers @"PreferenceSpecifiers"
|
||||
#define kIASKType @"Type"
|
||||
#define kIASKTitle @"Title"
|
||||
#define kIASKFooterText @"FooterText"
|
||||
#define kIASKKey @"Key"
|
||||
#define kIASKFile @"File"
|
||||
#define kIASKDefaultValue @"DefaultValue"
|
||||
#define kIASKMinimumValue @"MinimumValue"
|
||||
#define kIASKMaximumValue @"MaximumValue"
|
||||
#define kIASKTrueValue @"TrueValue"
|
||||
#define kIASKFalseValue @"FalseValue"
|
||||
#define kIASKIsSecure @"IsSecure"
|
||||
#define KIASKKeyboardType @"KeyboardType"
|
||||
#define kIASKAutocapitalizationType @"AutocapitalizationType"
|
||||
#define kIASKAutoCorrectionType @"AutocorrectionType"
|
||||
#define kIASKValues @"Values"
|
||||
#define kIASKTitles @"Titles"
|
||||
#define kIASKViewControllerClass @"IASKViewControllerClass"
|
||||
#define kIASKViewControllerSelector @"IASKViewControllerSelector"
|
||||
#define kIASKButtonClass @"IASKButtonClass"
|
||||
#define kIASKButtonAction @"IASKButtonAction"
|
||||
#define kIASKMailComposeToRecipents @"IASKMailComposeToRecipents"
|
||||
#define kIASKMailComposeCcRecipents @"IASKMailComposeCcRecipents"
|
||||
#define kIASKMailComposeBccRecipents @"IASKMailComposeBccRecipents"
|
||||
#define kIASKMailComposeSubject @"IASKMailComposeSubject"
|
||||
#define kIASKMailComposeBody @"IASKMailComposeBody"
|
||||
#define kIASKMailComposeBodyIsHTML @"IASKMailComposeBodyIsHTML"
|
||||
#define kIASKKeyboardAlphabet @"Alphabet"
|
||||
#define kIASKKeyboardNumbersAndPunctuation @"NumbersAndPunctuation"
|
||||
#define kIASKKeyboardNumberPad @"NumberPad"
|
||||
#define kIASKKeyboardDecimalPad @"DecimalPad"
|
||||
|
||||
#define KIASKKeyboardURL @"URL"
|
||||
#define kIASKKeyboardEmailAddress @"EmailAddress"
|
||||
#define kIASKAutoCapNone @"None"
|
||||
#define kIASKAutoCapSentences @"Sentences"
|
||||
#define kIASKAutoCapWords @"Words"
|
||||
#define kIASKAutoCapAllCharacters @"AllCharacters"
|
||||
#define kIASKAutoCorrDefault @"Default"
|
||||
#define kIASKAutoCorrNo @"No"
|
||||
#define kIASKAutoCorrYes @"Yes"
|
||||
#define kIASKMinimumValueImage @"MinimumValueImage"
|
||||
#define kIASKMaximumValueImage @"MaximumValueImage"
|
||||
|
||||
#define kIASKPSGroupSpecifier @"PSGroupSpecifier"
|
||||
#define kIASKPSToggleSwitchSpecifier @"PSToggleSwitchSpecifier"
|
||||
#define kIASKPSMultiValueSpecifier @"PSMultiValueSpecifier"
|
||||
#define kIASKPSSliderSpecifier @"PSSliderSpecifier"
|
||||
#define kIASKPSTitleValueSpecifier @"PSTitleValueSpecifier"
|
||||
#define kIASKPSTextFieldSpecifier @"PSTextFieldSpecifier"
|
||||
#define kIASKPSChildPaneSpecifier @"PSChildPaneSpecifier"
|
||||
#define kIASKOpenURLSpecifier @"IASKOpenURLSpecifier"
|
||||
#define kIASKButtonSpecifier @"IASKButtonSpecifier"
|
||||
#define kIASKMailComposeSpecifier @"IASKMailComposeSpecifier"
|
||||
#define kIASKCustomViewSpecifier @"IASKCustomViewSpecifier"
|
||||
|
||||
#define kIASKBundleFolder @"Settings.bundle"
|
||||
#define kIASKBundleFolderAlt @"InAppSettings.bundle"
|
||||
#define kIASKBundleFilename @"Root.plist"
|
||||
#define KIASKBundleLocaleFolderExtension @".lproj"
|
||||
|
||||
#define kIASKAppSettingChanged @"kAppSettingChanged"
|
||||
|
||||
#define kIASKSectionHeaderIndex 0
|
||||
|
||||
#define kIASKSliderNoImagesPadding 11
|
||||
#define kIASKSliderImagesPadding 43
|
||||
|
||||
|
||||
#define kIASKTableWidth 320
|
||||
#define kIASKSpacing 5
|
||||
#define kIASKMinLabelWidth 97
|
||||
#define kIASKMinValueWidth 35
|
||||
#define kIASKPaddingLeft 9
|
||||
#define kIASKPaddingRight 10
|
||||
#define kIASKHorizontalPaddingGroupTitles 19
|
||||
#define kIASKVerticalPaddingGroupTitles 15
|
||||
|
||||
#define kIASKLabelFontSize 17
|
||||
#define kIASKgrayBlueColor [UIColor colorWithRed:0.318 green:0.4 blue:0.569 alpha:1.0]
|
||||
|
||||
#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_4_0
|
||||
#define kCFCoreFoundationVersionNumber_iPhoneOS_4_0 550.32
|
||||
#endif
|
||||
|
||||
#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_4_1
|
||||
#define kCFCoreFoundationVersionNumber_iPhoneOS_4_1 550.38
|
||||
#endif
|
||||
|
||||
|
||||
#define IASK_IF_IOS4_OR_GREATER(...) \
|
||||
if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_4_0) \
|
||||
{ \
|
||||
__VA_ARGS__ \
|
||||
}
|
||||
|
||||
@class IASKSpecifier;
|
||||
|
||||
@protocol IASKSettingsReaderFilterDelegate <NSObject>
|
||||
- (NSDictionary*) filterPreferenceSpecifier:(NSDictionary*)specifier;
|
||||
@end
|
||||
|
||||
@interface IASKSettingsReader : NSObject {
|
||||
NSString *_path;
|
||||
NSString *_localizationTable;
|
||||
NSString *_bundlePath;
|
||||
NSDictionary *_settingsBundle;
|
||||
NSArray *_dataSource;
|
||||
NSBundle *_bundle;
|
||||
id<IASKSettingsReaderFilterDelegate> delegate;
|
||||
}
|
||||
|
||||
- (id)initWithFile:(NSString*)file;
|
||||
- (NSInteger)numberOfSections;
|
||||
- (NSInteger)numberOfRowsForSection:(NSInteger)section;
|
||||
- (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath;
|
||||
- (NSIndexPath*)indexPathForKey:(NSString*)key;
|
||||
- (IASKSpecifier*)specifierForKey:(NSString*)key;
|
||||
- (NSString*)titleForSection:(NSInteger)section;
|
||||
- (NSString*)keyForSection:(NSInteger)section;
|
||||
- (NSString*)footerTextForSection:(NSInteger)section;
|
||||
- (NSString*)titleForStringId:(NSString*)stringId;
|
||||
- (NSString*)pathForImageNamed:(NSString*)image;
|
||||
|
||||
@property (nonatomic, retain) NSString *path;
|
||||
@property (nonatomic, retain) NSString *localizationTable;
|
||||
@property (nonatomic, retain) NSString *bundlePath;
|
||||
@property (nonatomic, retain) NSDictionary *settingsBundle;
|
||||
@property (nonatomic, retain) NSArray *dataSource;
|
||||
@property (nonatomic, retain) id<IASKSettingsReaderFilterDelegate> delegate;
|
||||
@end
|
||||
278
InAppSettingsKit/Models/IASKSettingsReader.m
Normal file
278
InAppSettingsKit/Models/IASKSettingsReader.m
Normal file
|
|
@ -0,0 +1,278 @@
|
|||
//
|
||||
// IASKSettingsReader.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSettingsReader.h"
|
||||
#import "IASKSpecifier.h"
|
||||
|
||||
@interface IASKSettingsReader (private)
|
||||
- (void)_reinterpretBundle:(NSDictionary*)settingsBundle;
|
||||
- (BOOL)_sectionHasHeading:(NSInteger)section;
|
||||
- (NSString *)platformSuffix;
|
||||
- (NSString *)locateSettingsFile:(NSString *)file;
|
||||
|
||||
@end
|
||||
|
||||
@implementation IASKSettingsReader
|
||||
|
||||
@synthesize path=_path,
|
||||
localizationTable=_localizationTable,
|
||||
bundlePath=_bundlePath,
|
||||
settingsBundle=_settingsBundle,
|
||||
dataSource=_dataSource;
|
||||
@synthesize delegate;
|
||||
|
||||
- (id)init {
|
||||
return [self initWithFile:@"Root"];
|
||||
}
|
||||
|
||||
- (id)initWithFile:(NSString*)file {
|
||||
if ((self=[super init])) {
|
||||
|
||||
|
||||
self.path = [self locateSettingsFile: file];
|
||||
[self setSettingsBundle:[NSDictionary dictionaryWithContentsOfFile:self.path]];
|
||||
self.bundlePath = [self.path stringByDeletingLastPathComponent];
|
||||
_bundle = [[NSBundle bundleWithPath:[self bundlePath]] retain];
|
||||
|
||||
// Look for localization file
|
||||
self.localizationTable = [self.settingsBundle objectForKey:@"StringsTable"];
|
||||
if (!self.localizationTable)
|
||||
{
|
||||
// Look for localization file using filename
|
||||
self.localizationTable = [[[[self.path stringByDeletingPathExtension] // removes '.plist'
|
||||
stringByDeletingPathExtension] // removes potential '.inApp'
|
||||
lastPathComponent] // strip absolute path
|
||||
stringByReplacingOccurrencesOfString:[self platformSuffix] withString:@""]; // removes potential '~device' (~ipad, ~iphone)
|
||||
if([_bundle pathForResource:self.localizationTable ofType:@"strings"] == nil){
|
||||
// Could not find the specified localization: use default
|
||||
self.localizationTable = @"Root";
|
||||
}
|
||||
}
|
||||
|
||||
if (_settingsBundle) {
|
||||
[self _reinterpretBundle:_settingsBundle];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[_path release], _path = nil;
|
||||
[_localizationTable release], _localizationTable = nil;
|
||||
[_bundlePath release], _bundlePath = nil;
|
||||
[_settingsBundle release], _settingsBundle = nil;
|
||||
[_dataSource release], _dataSource = nil;
|
||||
[_bundle release], _bundle = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)_reinterpretBundle:(NSDictionary*)settingsBundle {
|
||||
NSArray *preferenceSpecifiers = [settingsBundle objectForKey:kIASKPreferenceSpecifiers];
|
||||
NSInteger sectionCount = -1;
|
||||
NSMutableArray *dataSource = [[[NSMutableArray alloc] init] autorelease];
|
||||
|
||||
for (NSDictionary *specifier in preferenceSpecifiers) {
|
||||
if (delegate != nil) {
|
||||
specifier = [delegate filterPreferenceSpecifier:specifier];
|
||||
if (specifier == nil) {
|
||||
// skip
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ([(NSString*)[specifier objectForKey:kIASKType] isEqualToString:kIASKPSGroupSpecifier]) {
|
||||
NSMutableArray *newArray = [[NSMutableArray alloc] init];
|
||||
|
||||
[newArray addObject:specifier];
|
||||
[dataSource addObject:newArray];
|
||||
[newArray release];
|
||||
sectionCount++;
|
||||
}
|
||||
else {
|
||||
if (sectionCount == -1) {
|
||||
NSMutableArray *newArray = [[NSMutableArray alloc] init];
|
||||
[dataSource addObject:newArray];
|
||||
[newArray release];
|
||||
sectionCount++;
|
||||
}
|
||||
|
||||
IASKSpecifier *newSpecifier = [[IASKSpecifier alloc] initWithSpecifier:specifier];
|
||||
[(NSMutableArray*)[dataSource objectAtIndex:sectionCount] addObject:newSpecifier];
|
||||
[newSpecifier release];
|
||||
}
|
||||
}
|
||||
[self setDataSource:dataSource];
|
||||
}
|
||||
|
||||
- (BOOL)_sectionHasHeading:(NSInteger)section {
|
||||
return [[[[self dataSource] objectAtIndex:section] objectAtIndex:0] isKindOfClass:[NSDictionary class]];
|
||||
}
|
||||
|
||||
- (NSInteger)numberOfSections {
|
||||
return [[self dataSource] count];
|
||||
}
|
||||
|
||||
- (NSInteger)numberOfRowsForSection:(NSInteger)section {
|
||||
int headingCorrection = [self _sectionHasHeading:section] ? 1 : 0;
|
||||
return [(NSArray*)[[self dataSource] objectAtIndex:section] count] - headingCorrection;
|
||||
}
|
||||
|
||||
- (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath {
|
||||
int headingCorrection = [self _sectionHasHeading:indexPath.section] ? 1 : 0;
|
||||
|
||||
IASKSpecifier *specifier = [[[self dataSource] objectAtIndex:indexPath.section] objectAtIndex:(indexPath.row+headingCorrection)];
|
||||
specifier.settingsReader = self;
|
||||
return specifier;
|
||||
}
|
||||
|
||||
- (NSIndexPath*)indexPathForKey:(NSString *)key {
|
||||
for (NSUInteger sectionIndex = 0; sectionIndex < self.dataSource.count; sectionIndex++) {
|
||||
NSArray *section = [self.dataSource objectAtIndex:sectionIndex];
|
||||
for (NSUInteger rowIndex = 0; rowIndex < section.count; rowIndex++) {
|
||||
IASKSpecifier *specifier = (IASKSpecifier*)[section objectAtIndex:rowIndex];
|
||||
if ([specifier isKindOfClass:[IASKSpecifier class]] && [specifier.key isEqualToString:key]) {
|
||||
NSUInteger correctedRowIndex = rowIndex - [self _sectionHasHeading:sectionIndex];
|
||||
return [NSIndexPath indexPathForRow:correctedRowIndex inSection:sectionIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (IASKSpecifier*)specifierForKey:(NSString*)key {
|
||||
for (NSArray *specifiers in _dataSource) {
|
||||
for (id sp in specifiers) {
|
||||
if ([sp isKindOfClass:[IASKSpecifier class]]) {
|
||||
if ([[sp key] isEqualToString:key]) {
|
||||
return sp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString*)titleForSection:(NSInteger)section {
|
||||
if ([self _sectionHasHeading:section]) {
|
||||
NSDictionary *dict = [[[self dataSource] objectAtIndex:section] objectAtIndex:kIASKSectionHeaderIndex];
|
||||
return [self titleForStringId:[dict objectForKey:kIASKTitle]];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString*)keyForSection:(NSInteger)section {
|
||||
if ([self _sectionHasHeading:section]) {
|
||||
return [[[[self dataSource] objectAtIndex:section] objectAtIndex:kIASKSectionHeaderIndex] objectForKey:kIASKKey];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString*)footerTextForSection:(NSInteger)section {
|
||||
if ([self _sectionHasHeading:section]) {
|
||||
NSDictionary *dict = [[[self dataSource] objectAtIndex:section] objectAtIndex:kIASKSectionHeaderIndex];
|
||||
return [self titleForStringId:[dict objectForKey:kIASKFooterText]];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString*)titleForStringId:(NSString*)stringId {
|
||||
return [_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable];
|
||||
}
|
||||
|
||||
- (NSString*)pathForImageNamed:(NSString*)image {
|
||||
return [[self bundlePath] stringByAppendingPathComponent:image];
|
||||
}
|
||||
|
||||
- (NSString *)platformSuffix {
|
||||
BOOL isPad = NO;
|
||||
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200)
|
||||
isPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
|
||||
#endif
|
||||
return isPad ? @"~ipad" : @"~iphone";
|
||||
}
|
||||
|
||||
- (NSString *)file:(NSString *)file
|
||||
withBundle:(NSString *)bundle
|
||||
suffix:(NSString *)suffix
|
||||
extension:(NSString *)extension {
|
||||
|
||||
NSString *appBundle = [[NSBundle mainBundle] bundlePath];
|
||||
bundle = [appBundle stringByAppendingPathComponent:bundle];
|
||||
file = [file stringByAppendingFormat:@"%@%@", suffix, extension];
|
||||
return [bundle stringByAppendingPathComponent:file];
|
||||
|
||||
}
|
||||
|
||||
- (NSString *)locateSettingsFile: (NSString *)file {
|
||||
|
||||
// The file is searched in the following order:
|
||||
//
|
||||
// InAppSettings.bundle/FILE~DEVICE.inApp.plist
|
||||
// InAppSettings.bundle/FILE.inApp.plist
|
||||
// InAppSettings.bundle/FILE~DEVICE.plist
|
||||
// InAppSettings.bundle/FILE.plist
|
||||
// Settings.bundle/FILE~DEVICE.inApp.plist
|
||||
// Settings.bundle/FILE.inApp.plist
|
||||
// Settings.bundle/FILE~DEVICE.plist
|
||||
// Settings.bundle/FILE.plist
|
||||
//
|
||||
// where DEVICE is either "iphone" or "ipad" depending on the current
|
||||
// interface idiom.
|
||||
//
|
||||
// Settings.app uses the ~DEVICE suffixes since iOS 4.0. There are some
|
||||
// differences from this implementation:
|
||||
// - For an iPhone-only app running on iPad, Settings.app will not use the
|
||||
// ~iphone suffix. There is no point in using these suffixes outside
|
||||
// of universal apps anyway.
|
||||
// - This implementation uses the device suffixes on iOS 3.x as well.
|
||||
// - also check current locale (short only)
|
||||
|
||||
NSArray *bundles =
|
||||
[NSArray arrayWithObjects:kIASKBundleFolderAlt, kIASKBundleFolder, nil];
|
||||
|
||||
NSArray *extensions =
|
||||
[NSArray arrayWithObjects:@".inApp.plist", @".plist", nil];
|
||||
|
||||
NSArray *suffixes =
|
||||
[NSArray arrayWithObjects:[self platformSuffix], @"", nil];
|
||||
|
||||
NSArray *languages =
|
||||
[NSArray arrayWithObjects:[[[NSLocale preferredLanguages] objectAtIndex:0] stringByAppendingString:KIASKBundleLocaleFolderExtension], @"", nil];
|
||||
|
||||
NSString *path = nil;
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
|
||||
for (NSString *bundle in bundles) {
|
||||
for (NSString *extension in extensions) {
|
||||
for (NSString *suffix in suffixes) {
|
||||
for (NSString *language in languages) {
|
||||
path = [self file:file
|
||||
withBundle:[bundle stringByAppendingPathComponent:language]
|
||||
suffix:suffix
|
||||
extension:extension];
|
||||
if ([fileManager fileExistsAtPath:path]) {
|
||||
goto exitFromNestedLoop;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exitFromNestedLoop:
|
||||
return path;
|
||||
}
|
||||
|
||||
@end
|
||||
39
InAppSettingsKit/Models/IASKSettingsStore.h
Normal file
39
InAppSettingsKit/Models/IASKSettingsStore.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
//
|
||||
// IASKSettingsStore.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@protocol IASKSettingsStore <NSObject>
|
||||
@required
|
||||
- (void)setBool:(BOOL)value forKey:(NSString*)key;
|
||||
- (void)setFloat:(float)value forKey:(NSString*)key;
|
||||
- (void)setDouble:(double)value forKey:(NSString*)key;
|
||||
- (void)setInteger:(int)value forKey:(NSString*)key;
|
||||
- (void)setObject:(id)value forKey:(NSString*)key;
|
||||
- (BOOL)boolForKey:(NSString*)key;
|
||||
- (float)floatForKey:(NSString*)key;
|
||||
- (double)doubleForKey:(NSString*)key;
|
||||
- (int)integerForKey:(NSString*)key;
|
||||
- (id)objectForKey:(NSString*)key;
|
||||
- (BOOL)synchronize; // Write settings to a permanant storage. Returns YES on success, NO otherwise
|
||||
@end
|
||||
|
||||
|
||||
@interface IASKAbstractSettingsStore : NSObject <IASKSettingsStore> {
|
||||
}
|
||||
|
||||
@end
|
||||
68
InAppSettingsKit/Models/IASKSettingsStore.m
Normal file
68
InAppSettingsKit/Models/IASKSettingsStore.m
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
//
|
||||
// IASKSettingsStore.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSettingsStore.h"
|
||||
|
||||
@implementation IASKAbstractSettingsStore
|
||||
|
||||
- (void)setObject:(id)value forKey:(NSString*)key {
|
||||
[NSException raise:@"Unimplemented"
|
||||
format:@"setObject:forKey: must be implemented in subclasses of IASKAbstractSettingsStore"];
|
||||
}
|
||||
|
||||
- (id)objectForKey:(NSString*)key {
|
||||
[NSException raise:@"Unimplemented"
|
||||
format:@"objectForKey: must be implemented in subclasses of IASKAbstractSettingsStore"];
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)setBool:(BOOL)value forKey:(NSString*)key {
|
||||
[self setObject:[NSNumber numberWithBool:value] forKey:key];
|
||||
}
|
||||
|
||||
- (void)setFloat:(float)value forKey:(NSString*)key {
|
||||
[self setObject:[NSNumber numberWithFloat:value] forKey:key];
|
||||
}
|
||||
|
||||
- (void)setInteger:(int)value forKey:(NSString*)key {
|
||||
[self setObject:[NSNumber numberWithInt:value] forKey:key];
|
||||
}
|
||||
|
||||
- (void)setDouble:(double)value forKey:(NSString*)key {
|
||||
[self setObject:[NSNumber numberWithDouble:value] forKey:key];
|
||||
}
|
||||
|
||||
- (BOOL)boolForKey:(NSString*)key {
|
||||
return [[self objectForKey:key] boolValue];
|
||||
}
|
||||
|
||||
- (float)floatForKey:(NSString*)key {
|
||||
return [[self objectForKey:key] floatValue];
|
||||
}
|
||||
- (int)integerForKey:(NSString*)key {
|
||||
return [[self objectForKey:key] intValue];
|
||||
}
|
||||
|
||||
- (double)doubleForKey:(NSString*)key {
|
||||
return [[self objectForKey:key] doubleValue];
|
||||
}
|
||||
|
||||
- (BOOL)synchronize {
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
28
InAppSettingsKit/Models/IASKSettingsStoreFile.h
Normal file
28
InAppSettingsKit/Models/IASKSettingsStoreFile.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
//
|
||||
// IASKSettingsStoreFile.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "IASKSettingsStore.h"
|
||||
|
||||
@interface IASKSettingsStoreFile : IASKAbstractSettingsStore {
|
||||
NSString * _filePath;
|
||||
NSMutableDictionary * _dict;
|
||||
}
|
||||
|
||||
- (id)initWithPath:(NSString*)path;
|
||||
|
||||
@end
|
||||
54
InAppSettingsKit/Models/IASKSettingsStoreFile.m
Normal file
54
InAppSettingsKit/Models/IASKSettingsStoreFile.m
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
//
|
||||
// IASKSettingsStoreFile.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSettingsStoreFile.h"
|
||||
|
||||
|
||||
@implementation IASKSettingsStoreFile
|
||||
|
||||
- (id)initWithPath:(NSString*)path {
|
||||
if((self = [super init])) {
|
||||
_filePath = [path retain];
|
||||
_dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
|
||||
if(_dict == nil) {
|
||||
_dict = [[NSMutableDictionary alloc] init];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[_dict release], _dict = nil;
|
||||
[_filePath release], _filePath = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
- (void)setObject:(id)value forKey:(NSString *)key {
|
||||
[_dict setObject:value forKey:key];
|
||||
}
|
||||
|
||||
- (id)objectForKey:(NSString *)key {
|
||||
return [_dict objectForKey:key];
|
||||
}
|
||||
|
||||
- (BOOL)synchronize {
|
||||
return [_dict writeToFile:_filePath atomically:YES];
|
||||
}
|
||||
|
||||
@end
|
||||
25
InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h
Normal file
25
InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
//
|
||||
// IASKSettingsStoreUserDefaults.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "IASKSettingsStore.h"
|
||||
|
||||
@interface IASKSettingsStoreUserDefaults : IASKAbstractSettingsStore {
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
67
InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m
Normal file
67
InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
//
|
||||
// IASKSettingsStoreUserDefaults.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSettingsStoreUserDefaults.h"
|
||||
|
||||
|
||||
@implementation IASKSettingsStoreUserDefaults
|
||||
|
||||
- (void)setBool:(BOOL)value forKey:(NSString*)key {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:value forKey:key];
|
||||
}
|
||||
|
||||
- (void)setFloat:(float)value forKey:(NSString*)key {
|
||||
[[NSUserDefaults standardUserDefaults] setFloat:value forKey:key];
|
||||
}
|
||||
|
||||
- (void)setDouble:(double)value forKey:(NSString*)key {
|
||||
[[NSUserDefaults standardUserDefaults] setDouble:value forKey:key];
|
||||
}
|
||||
|
||||
- (void)setInteger:(int)value forKey:(NSString*)key {
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:value forKey:key];
|
||||
}
|
||||
|
||||
- (void)setObject:(id)value forKey:(NSString*)key {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:value forKey:key];
|
||||
}
|
||||
|
||||
- (BOOL)boolForKey:(NSString*)key {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||
}
|
||||
|
||||
- (float)floatForKey:(NSString*)key {
|
||||
return [[NSUserDefaults standardUserDefaults] floatForKey:key];
|
||||
}
|
||||
|
||||
- (double)doubleForKey:(NSString*)key {
|
||||
return [[NSUserDefaults standardUserDefaults] doubleForKey:key];
|
||||
}
|
||||
|
||||
- (int)integerForKey:(NSString*)key {
|
||||
return [[NSUserDefaults standardUserDefaults] integerForKey:key];
|
||||
}
|
||||
|
||||
- (id)objectForKey:(NSString*)key {
|
||||
return [[NSUserDefaults standardUserDefaults] objectForKey:key];
|
||||
}
|
||||
|
||||
- (BOOL)synchronize {
|
||||
return [[NSUserDefaults standardUserDefaults] synchronize];
|
||||
}
|
||||
|
||||
@end
|
||||
59
InAppSettingsKit/Models/IASKSpecifier.h
Normal file
59
InAppSettingsKit/Models/IASKSpecifier.h
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
//
|
||||
// IASKSpecifier.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class IASKSettingsReader;
|
||||
|
||||
@interface IASKSpecifier : NSObject {
|
||||
NSDictionary *_specifierDict;
|
||||
NSDictionary *_multipleValuesDict;
|
||||
IASKSettingsReader *_settingsReader;
|
||||
}
|
||||
@property (nonatomic, retain) NSDictionary *specifierDict;
|
||||
@property (nonatomic, assign) IASKSettingsReader *settingsReader;
|
||||
|
||||
- (id)initWithSpecifier:(NSDictionary*)specifier;
|
||||
- (NSString*)localizedObjectForKey:(NSString*)key;
|
||||
- (NSString*)title;
|
||||
- (NSString*)key;
|
||||
- (NSString*)type;
|
||||
- (NSString*)titleForCurrentValue:(id)currentValue;
|
||||
- (NSInteger)multipleValuesCount;
|
||||
- (NSArray*)multipleValues;
|
||||
- (NSArray*)multipleTitles;
|
||||
- (NSString*)file;
|
||||
- (id)defaultValue;
|
||||
- (id)defaultStringValue;
|
||||
- (BOOL)defaultBoolValue;
|
||||
- (id)trueValue;
|
||||
- (id)falseValue;
|
||||
- (float)minimumValue;
|
||||
- (float)maximumValue;
|
||||
- (NSString*)minimumValueImage;
|
||||
- (NSString*)maximumValueImage;
|
||||
- (BOOL)isSecure;
|
||||
- (UIKeyboardType)keyboardType;
|
||||
- (UITextAutocapitalizationType)autocapitalizationType;
|
||||
- (UITextAutocorrectionType)autoCorrectionType;
|
||||
- (NSString*)footerText;
|
||||
- (Class)viewControllerClass;
|
||||
- (SEL)viewControllerSelector;
|
||||
-(Class)buttonClass;
|
||||
-(SEL)buttonAction;
|
||||
|
||||
@end
|
||||
240
InAppSettingsKit/Models/IASKSpecifier.m
Normal file
240
InAppSettingsKit/Models/IASKSpecifier.m
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
//
|
||||
// IASKSpecifier.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSpecifier.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
|
||||
@interface IASKSpecifier ()
|
||||
@property (nonatomic, retain) NSDictionary *multipleValuesDict;
|
||||
- (void)_reinterpretValues:(NSDictionary*)specifierDict;
|
||||
@end
|
||||
|
||||
@implementation IASKSpecifier
|
||||
|
||||
@synthesize specifierDict=_specifierDict;
|
||||
@synthesize multipleValuesDict=_multipleValuesDict;
|
||||
@synthesize settingsReader = _settingsReader;
|
||||
|
||||
- (id)initWithSpecifier:(NSDictionary*)specifier {
|
||||
if ((self = [super init])) {
|
||||
[self setSpecifierDict:specifier];
|
||||
|
||||
if ([[self type] isEqualToString:kIASKPSMultiValueSpecifier] ||
|
||||
[[self type] isEqualToString:kIASKPSTitleValueSpecifier]) {
|
||||
[self _reinterpretValues:[self specifierDict]];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[_specifierDict release], _specifierDict = nil;
|
||||
[_multipleValuesDict release], _multipleValuesDict = nil;
|
||||
|
||||
_settingsReader = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)_reinterpretValues:(NSDictionary*)specifierDict {
|
||||
NSArray *values = [_specifierDict objectForKey:kIASKValues];
|
||||
NSArray *titles = [_specifierDict objectForKey:kIASKTitles];
|
||||
|
||||
NSMutableDictionary *multipleValuesDict = [[[NSMutableDictionary alloc] init] autorelease];
|
||||
|
||||
if (values) {
|
||||
[multipleValuesDict setObject:values forKey:kIASKValues];
|
||||
}
|
||||
|
||||
if (titles) {
|
||||
[multipleValuesDict setObject:titles forKey:kIASKTitles];
|
||||
}
|
||||
|
||||
[self setMultipleValuesDict:multipleValuesDict];
|
||||
}
|
||||
- (NSString*)localizedObjectForKey:(NSString*)key {
|
||||
return [self.settingsReader titleForStringId:[_specifierDict objectForKey:key]];
|
||||
}
|
||||
|
||||
- (NSString*)title {
|
||||
return [self localizedObjectForKey:kIASKTitle];
|
||||
}
|
||||
|
||||
- (NSString*)footerText {
|
||||
return [self localizedObjectForKey:kIASKFooterText];
|
||||
}
|
||||
|
||||
-(Class) viewControllerClass {
|
||||
return NSClassFromString([_specifierDict objectForKey:kIASKViewControllerClass]);
|
||||
}
|
||||
|
||||
-(SEL) viewControllerSelector {
|
||||
return NSSelectorFromString([_specifierDict objectForKey:kIASKViewControllerSelector]);
|
||||
}
|
||||
|
||||
-(Class)buttonClass {
|
||||
return NSClassFromString([_specifierDict objectForKey:kIASKButtonClass]);
|
||||
}
|
||||
|
||||
-(SEL)buttonAction {
|
||||
return NSSelectorFromString([_specifierDict objectForKey:kIASKButtonAction]);
|
||||
}
|
||||
|
||||
- (NSString*)key {
|
||||
return [_specifierDict objectForKey:kIASKKey];
|
||||
}
|
||||
|
||||
- (NSString*)type {
|
||||
return [_specifierDict objectForKey:kIASKType];
|
||||
}
|
||||
|
||||
- (NSString*)titleForCurrentValue:(id)currentValue {
|
||||
NSArray *values = [self multipleValues];
|
||||
NSArray *titles = [self multipleTitles];
|
||||
if (values.count != titles.count) {
|
||||
return nil;
|
||||
}
|
||||
NSInteger keyIndex = [values indexOfObject:currentValue];
|
||||
if (keyIndex == NSNotFound) {
|
||||
return nil;
|
||||
}
|
||||
@try {
|
||||
return [self.settingsReader titleForStringId:[titles objectAtIndex:keyIndex]];
|
||||
}
|
||||
@catch (NSException * e) {}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSInteger)multipleValuesCount {
|
||||
return [[_multipleValuesDict objectForKey:kIASKValues] count];
|
||||
}
|
||||
|
||||
- (NSArray*)multipleValues {
|
||||
return [_multipleValuesDict objectForKey:kIASKValues];
|
||||
}
|
||||
|
||||
- (NSArray*)multipleTitles {
|
||||
return [_multipleValuesDict objectForKey:kIASKTitles];
|
||||
}
|
||||
|
||||
- (NSString*)file {
|
||||
return [_specifierDict objectForKey:kIASKFile];
|
||||
}
|
||||
|
||||
- (id)defaultValue {
|
||||
return [_specifierDict objectForKey:kIASKDefaultValue];
|
||||
}
|
||||
|
||||
- (id)defaultStringValue {
|
||||
return [[_specifierDict objectForKey:kIASKDefaultValue] description];
|
||||
}
|
||||
|
||||
- (BOOL)defaultBoolValue {
|
||||
id defaultValue = [self defaultValue];
|
||||
if ([defaultValue isEqual:[self trueValue]]) {
|
||||
return YES;
|
||||
}
|
||||
if ([defaultValue isEqual:[self falseValue]]) {
|
||||
return NO;
|
||||
}
|
||||
return [defaultValue boolValue];
|
||||
}
|
||||
|
||||
- (id)trueValue {
|
||||
return [_specifierDict objectForKey:kIASKTrueValue];
|
||||
}
|
||||
|
||||
- (id)falseValue {
|
||||
return [_specifierDict objectForKey:kIASKFalseValue];
|
||||
}
|
||||
|
||||
- (float)minimumValue {
|
||||
return [[_specifierDict objectForKey:kIASKMinimumValue] floatValue];
|
||||
}
|
||||
|
||||
- (float)maximumValue {
|
||||
return [[_specifierDict objectForKey:kIASKMaximumValue] floatValue];
|
||||
}
|
||||
|
||||
- (NSString*)minimumValueImage {
|
||||
return [_specifierDict objectForKey:kIASKMinimumValueImage];
|
||||
}
|
||||
|
||||
- (NSString*)maximumValueImage {
|
||||
return [_specifierDict objectForKey:kIASKMaximumValueImage];
|
||||
}
|
||||
|
||||
- (BOOL)isSecure {
|
||||
return [[_specifierDict objectForKey:kIASKIsSecure] boolValue];
|
||||
}
|
||||
|
||||
- (UIKeyboardType)keyboardType {
|
||||
if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardAlphabet]) {
|
||||
return UIKeyboardTypeDefault;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardNumbersAndPunctuation]) {
|
||||
return UIKeyboardTypeNumbersAndPunctuation;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardNumberPad]) {
|
||||
return UIKeyboardTypeNumberPad;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardDecimalPad]) {
|
||||
if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_4_1) {
|
||||
return UIKeyboardTypeDecimalPad;
|
||||
}
|
||||
else {
|
||||
return UIKeyboardTypeNumbersAndPunctuation;
|
||||
}
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:KIASKKeyboardURL]) {
|
||||
return UIKeyboardTypeURL;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardEmailAddress]) {
|
||||
return UIKeyboardTypeEmailAddress;
|
||||
}
|
||||
return UIKeyboardTypeDefault;
|
||||
}
|
||||
|
||||
- (UITextAutocapitalizationType)autocapitalizationType {
|
||||
if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapNone]) {
|
||||
return UITextAutocapitalizationTypeNone;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapSentences]) {
|
||||
return UITextAutocapitalizationTypeSentences;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapWords]) {
|
||||
return UITextAutocapitalizationTypeWords;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapAllCharacters]) {
|
||||
return UITextAutocapitalizationTypeAllCharacters;
|
||||
}
|
||||
return UITextAutocapitalizationTypeNone;
|
||||
}
|
||||
|
||||
- (UITextAutocorrectionType)autoCorrectionType {
|
||||
if ([[_specifierDict objectForKey:kIASKAutoCorrectionType] isEqualToString:kIASKAutoCorrDefault]) {
|
||||
return UITextAutocorrectionTypeDefault;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:kIASKAutoCorrectionType] isEqualToString:kIASKAutoCorrNo]) {
|
||||
return UITextAutocorrectionTypeNo;
|
||||
}
|
||||
else if ([[_specifierDict objectForKey:kIASKAutoCorrectionType] isEqualToString:kIASKAutoCorrYes]) {
|
||||
return UITextAutocorrectionTypeYes;
|
||||
}
|
||||
return UITextAutocorrectionTypeDefault;
|
||||
}
|
||||
|
||||
@end
|
||||
31
InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h
Normal file
31
InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
//
|
||||
// IASKPSSliderSpecifierViewCell.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class IASKSlider;
|
||||
|
||||
@interface IASKPSSliderSpecifierViewCell : UITableViewCell {
|
||||
IASKSlider *_slider;
|
||||
UIImageView *_minImage;
|
||||
UIImageView *_maxImage;
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) IBOutlet IASKSlider *slider;
|
||||
@property (nonatomic, assign) IBOutlet UIImageView *minImage;
|
||||
@property (nonatomic, assign) IBOutlet UIImageView *maxImage;
|
||||
|
||||
@end
|
||||
72
InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m
Normal file
72
InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
//
|
||||
// IASKPSSliderSpecifierViewCell.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009-2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKPSSliderSpecifierViewCell.h"
|
||||
#import "IASKSlider.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
|
||||
@implementation IASKPSSliderSpecifierViewCell
|
||||
|
||||
@synthesize slider=_slider,
|
||||
minImage=_minImage,
|
||||
maxImage=_maxImage;
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
CGRect sliderBounds = _slider.bounds;
|
||||
CGPoint sliderCenter = _slider.center;
|
||||
const double superViewWidth = _slider.superview.frame.size.width;
|
||||
|
||||
sliderCenter.x = superViewWidth / 2;
|
||||
sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding * 2;
|
||||
_minImage.hidden = YES;
|
||||
_maxImage.hidden = YES;
|
||||
|
||||
// Check if there are min and max images. If so, change the layout accordingly.
|
||||
if (_minImage.image && _maxImage.image) {
|
||||
// Both images
|
||||
_minImage.hidden = NO;
|
||||
_maxImage.hidden = NO;
|
||||
sliderBounds.size.width = superViewWidth - kIASKSliderImagesPadding * 2;
|
||||
}
|
||||
else if (_minImage.image) {
|
||||
// Min image
|
||||
_minImage.hidden = NO;
|
||||
sliderCenter.x += (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding) / 2;
|
||||
sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding - kIASKSliderImagesPadding;
|
||||
}
|
||||
else if (_maxImage.image) {
|
||||
// Max image
|
||||
_maxImage.hidden = NO;
|
||||
sliderCenter.x -= (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding) / 2;
|
||||
sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding - kIASKSliderImagesPadding;
|
||||
}
|
||||
|
||||
_slider.bounds = sliderBounds;
|
||||
_slider.center = sliderCenter;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
_minImage.image = nil;
|
||||
_maxImage.image = nil;
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)prepareForReuse {
|
||||
_minImage.image = nil;
|
||||
_maxImage.image = nil;
|
||||
}
|
||||
@end
|
||||
29
InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h
Normal file
29
InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
//
|
||||
// IASKPSTextFieldSpecifierViewCell.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class IASKTextField;
|
||||
|
||||
@interface IASKPSTextFieldSpecifierViewCell : UITableViewCell {
|
||||
UILabel *_label;
|
||||
IASKTextField *_textField;
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) IBOutlet UILabel *label;
|
||||
@property (nonatomic, assign) IBOutlet IASKTextField *textField;
|
||||
|
||||
@end
|
||||
52
InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m
Normal file
52
InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
//
|
||||
// IASKPSTextFieldSpecifierViewCell.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009-2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKPSTextFieldSpecifierViewCell.h"
|
||||
#import "IASKTextField.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
|
||||
@implementation IASKPSTextFieldSpecifierViewCell
|
||||
|
||||
@synthesize label=_label,
|
||||
textField=_textField;
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
CGSize labelSize = [_label sizeThatFits:CGSizeZero];
|
||||
labelSize.width = MIN(labelSize.width, _label.bounds.size.width);
|
||||
|
||||
CGRect textFieldFrame = _textField.frame;
|
||||
textFieldFrame.origin.x = _label.frame.origin.x + MAX(kIASKMinLabelWidth, labelSize.width) + kIASKSpacing;
|
||||
if (!_label.text.length)
|
||||
textFieldFrame.origin.x = _label.frame.origin.x;
|
||||
textFieldFrame.size.width = _textField.superview.frame.size.width - textFieldFrame.origin.x - _label.frame.origin.x;
|
||||
_textField.frame = textFieldFrame;
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
22
InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h
Normal file
22
InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
//
|
||||
// IASKPSTitleValueSpecifierViewCell.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
@interface IASKPSTitleValueSpecifierViewCell : UITableViewCell
|
||||
|
||||
@end
|
||||
57
InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m
Normal file
57
InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
//
|
||||
// IASKPSTitleValueSpecifierViewCell.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2010:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKPSTitleValueSpecifierViewCell.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
|
||||
|
||||
@implementation IASKPSTitleValueSpecifierViewCell
|
||||
|
||||
- (void)layoutSubviews {
|
||||
// left align the value if the title is empty
|
||||
if (!self.textLabel.text.length) {
|
||||
self.textLabel.text = self.detailTextLabel.text;
|
||||
self.detailTextLabel.text = nil;
|
||||
if ([self.reuseIdentifier isEqualToString:kIASKPSMultiValueSpecifier]) {
|
||||
self.textLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];
|
||||
self.textLabel.textColor = self.detailTextLabel.textColor;
|
||||
}
|
||||
}
|
||||
[super layoutSubviews];
|
||||
|
||||
CGSize viewSize = [self.textLabel superview].frame.size;
|
||||
|
||||
//if there's an image, make room for it
|
||||
CGFloat imageOffset = self.imageView.image ? self.imageView.bounds.size.width + self.imageView.frame.origin.x : 0;
|
||||
|
||||
// set the left title label frame
|
||||
CGFloat labelWidth = [self.textLabel sizeThatFits:CGSizeZero].width;
|
||||
CGFloat minValueWidth = (self.detailTextLabel.text.length) ? kIASKMinValueWidth + kIASKSpacing : 0;
|
||||
labelWidth = MIN(labelWidth, viewSize.width - minValueWidth - kIASKPaddingLeft -kIASKPaddingRight - imageOffset);
|
||||
CGRect labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, labelWidth, viewSize.height -2);
|
||||
self.textLabel.frame = labelFrame;
|
||||
|
||||
// set the right value label frame
|
||||
if (self.detailTextLabel.text.length) {
|
||||
CGRect valueFrame = CGRectMake(kIASKPaddingLeft + labelWidth + kIASKSpacing + imageOffset,
|
||||
0,
|
||||
viewSize.width - (kIASKPaddingLeft + labelWidth + kIASKSpacing + imageOffset) - kIASKPaddingRight,
|
||||
viewSize.height -2);
|
||||
self.detailTextLabel.frame = valueFrame;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
29
InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h
Normal file
29
InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
//
|
||||
// IASKPSToggleSwitchSpecifierViewCell.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class IASKSwitch;
|
||||
|
||||
@interface IASKPSToggleSwitchSpecifierViewCell : UITableViewCell {
|
||||
UILabel *_label;
|
||||
IASKSwitch *_toggle;
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) IBOutlet UILabel *label;
|
||||
@property (nonatomic, assign) IBOutlet IASKSwitch *toggle;
|
||||
|
||||
@end
|
||||
62
InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m
Normal file
62
InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
//
|
||||
// IASKPSToggleSwitchSpecifierViewCell.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKPSToggleSwitchSpecifierViewCell.h"
|
||||
#import "IASKSwitch.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
|
||||
@implementation IASKPSToggleSwitchSpecifierViewCell
|
||||
|
||||
@synthesize label=_label,
|
||||
toggle=_toggle;
|
||||
|
||||
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
|
||||
// Initialization code
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
if(self.imageView.image) {
|
||||
//resize the label to make room for the image
|
||||
self.label.frame = CGRectMake(CGRectGetWidth(self.imageView.bounds) + self.imageView.frame.origin.x + kIASKSpacing,
|
||||
self.label.frame.origin.y,
|
||||
self.toggle.frame.origin.x - CGRectGetWidth(self.imageView.bounds) - 2.f * kIASKSpacing,
|
||||
self.label.frame.size.height);
|
||||
} else {
|
||||
self.label.frame = CGRectMake(kIASKPaddingLeft,
|
||||
self.label.frame.origin.y,
|
||||
self.toggle.frame.origin.x - kIASKSpacing - kIASKPaddingLeft,
|
||||
self.label.frame.size.height);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
26
InAppSettingsKit/Views/IASKSlider.h
Normal file
26
InAppSettingsKit/Views/IASKSlider.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// IASKSlider.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
@interface IASKSlider : UISlider {
|
||||
NSString *_key;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) NSString *key;
|
||||
|
||||
@end
|
||||
30
InAppSettingsKit/Views/IASKSlider.m
Normal file
30
InAppSettingsKit/Views/IASKSlider.m
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
//
|
||||
// IASKSlider.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSlider.h"
|
||||
|
||||
|
||||
@implementation IASKSlider
|
||||
|
||||
@synthesize key=_key;
|
||||
|
||||
- (void)dealloc {
|
||||
[_key release], _key = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end
|
||||
26
InAppSettingsKit/Views/IASKSwitch.h
Normal file
26
InAppSettingsKit/Views/IASKSwitch.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// IASKSwitch.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
@interface IASKSwitch : UISwitch {
|
||||
NSString *_key;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) NSString *key;
|
||||
|
||||
@end
|
||||
31
InAppSettingsKit/Views/IASKSwitch.m
Normal file
31
InAppSettingsKit/Views/IASKSwitch.m
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
//
|
||||
// IASKSwitch.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKSwitch.h"
|
||||
|
||||
|
||||
@implementation IASKSwitch
|
||||
|
||||
@synthesize key=_key;
|
||||
|
||||
- (void)dealloc {
|
||||
[_key release], _key = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
26
InAppSettingsKit/Views/IASKTextField.h
Normal file
26
InAppSettingsKit/Views/IASKTextField.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// IASKTextField.h
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
@interface IASKTextField : UITextField {
|
||||
NSString *_key;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) NSString *key;
|
||||
|
||||
@end
|
||||
30
InAppSettingsKit/Views/IASKTextField.m
Normal file
30
InAppSettingsKit/Views/IASKTextField.m
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
//
|
||||
// IASKTextField.m
|
||||
// http://www.inappsettingskit.com
|
||||
//
|
||||
// Copyright (c) 2009:
|
||||
// Luc Vandal, Edovia Inc., http://www.edovia.com
|
||||
// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com
|
||||
// All rights reserved.
|
||||
//
|
||||
// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz,
|
||||
// as the original authors of this code. You can give credit in a blog post, a tweet or on
|
||||
// a info page of your app. Also, the original authors appreciate letting them know if you use this code.
|
||||
//
|
||||
// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
|
||||
#import "IASKTextField.h"
|
||||
|
||||
|
||||
@implementation IASKTextField
|
||||
|
||||
@synthesize key=_key;
|
||||
|
||||
- (void)dealloc {
|
||||
[_key release], _key = nil;
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end
|
||||
222
InAppSettingsKit/Xibs/IASKAppSettingsView.xib
Normal file
222
InAppSettingsKit/Xibs/IASKAppSettingsView.xib
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1280</int>
|
||||
<string key="IBDocument.SystemVersion">11B26</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">1934</string>
|
||||
<string key="IBDocument.AppKitVersion">1138</string>
|
||||
<string key="IBDocument.HIToolboxVersion">566.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">931</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IBProxyObject</string>
|
||||
<string>IBUITableView</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="372490531">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="975951072">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUITableView" id="1838945">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">10</int>
|
||||
<object class="NSImage" key="NSImage">
|
||||
<int key="NSImageFlags">549453824</int>
|
||||
<string key="NSSize">{512, 1}</string>
|
||||
<object class="NSMutableArray" key="NSReps">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="0"/>
|
||||
<object class="NSBitmapImageRep">
|
||||
<object class="NSData" key="NSTIFFRepresentation">
|
||||
<bytes key="NS.bytes">TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
|
||||
y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
|
||||
xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
|
||||
xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
|
||||
xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
|
||||
xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
|
||||
xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
|
||||
y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
|
||||
y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
|
||||
xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
|
||||
xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
|
||||
xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
|
||||
xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
|
||||
xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
|
||||
y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
|
||||
y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
|
||||
xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
|
||||
xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
|
||||
xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
|
||||
xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
|
||||
xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
|
||||
y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
|
||||
y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
|
||||
xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
|
||||
xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
|
||||
xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
|
||||
xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
|
||||
xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
|
||||
y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
|
||||
y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
|
||||
xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
|
||||
xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
|
||||
xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
|
||||
xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
|
||||
xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
|
||||
AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
|
||||
AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
|
||||
AAgACAAIAAEAAQABAAE</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<string key="IBUIColorCocoaTouchKeyPath">groupTableViewBackgroundColor</string>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIBouncesZoom">NO</bool>
|
||||
<int key="IBUIStyle">1</int>
|
||||
<int key="IBUISeparatorStyle">1</int>
|
||||
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
|
||||
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
|
||||
<float key="IBUIRowHeight">44</float>
|
||||
<float key="IBUISectionHeaderHeight">10</float>
|
||||
<float key="IBUISectionFooterHeight">10</float>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="1838945"/>
|
||||
</object>
|
||||
<int key="connectionID">10</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="1838945"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">6</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="1838945"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">7</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<object class="NSArray" key="object" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="372490531"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="975951072"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="1838945"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-1.IBPluginDependency</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>-2.IBPluginDependency</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IASKAppSettingsViewController</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>UIResponder</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">10</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1280" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">931</string>
|
||||
</data>
|
||||
</archive>
|
||||
378
InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib
Normal file
378
InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib
Normal file
|
|
@ -0,0 +1,378 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1024</int>
|
||||
<string key="IBDocument.SystemVersion">10F569</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">804</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">123</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="1"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="372490531">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="975951072">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIView" id="191373211">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIWebView" id="197045155">
|
||||
<reference key="NSNextResponder" ref="191373211"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview" ref="191373211"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor" id="697334121">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="IBUIBackgroundColor" ref="697334121"/>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="191373211"/>
|
||||
</object>
|
||||
<int key="connectionID">3</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">webView</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="197045155"/>
|
||||
</object>
|
||||
<int key="connectionID">5</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="197045155"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">6</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="191373211"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="197045155"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="372490531"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="975951072"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="197045155"/>
|
||||
<reference key="parent" ref="191373211"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>1.IBEditorWindowLastContentRect</string>
|
||||
<string>1.IBPluginDependency</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IASKAppSettingsWebViewController</string>
|
||||
<string>UIResponder</string>
|
||||
<string>{{354, 412}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">6</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">IASKAppSettingsWebViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">webView</string>
|
||||
<string key="NS.object.0">UIWebView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">webView</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">webView</string>
|
||||
<string key="candidateClassName">UIWebView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">../InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="842439622">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIResponder</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="842439622"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UISearchBar</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UISearchDisplayController</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIView</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIWebView</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIWebView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<integer value="1024" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">../InAppSettingsKitSampleApp.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">123</string>
|
||||
</data>
|
||||
</archive>
|
||||
251
InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib
Normal file
251
InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1296</int>
|
||||
<string key="IBDocument.SystemVersion">11D50</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1179</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IBUISlider</string>
|
||||
<string>IBUITableViewCell</string>
|
||||
<string>IBUIImageView</string>
|
||||
<string>IBProxyObject</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="371349661">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUITableViewCell" id="699910302">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">290</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIView" id="833157797">
|
||||
<reference key="NSNextResponder" ref="699910302"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUISlider" id="213296969">
|
||||
<reference key="NSNextResponder" ref="833157797"/>
|
||||
<int key="NSvFlags">290</int>
|
||||
<string key="NSFrame">{{52, 12}, {216, 23}}</string>
|
||||
<reference key="NSSuperview" ref="833157797"/>
|
||||
<reference key="NSNextKeyView" ref="343121076"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUIContentHorizontalAlignment">0</int>
|
||||
<int key="IBUIContentVerticalAlignment">0</int>
|
||||
<float key="IBUIValue">0.5</float>
|
||||
<bool key="IBUIContinuous">NO</bool>
|
||||
</object>
|
||||
<object class="IBUIImageView" id="343121076">
|
||||
<reference key="NSNextResponder" ref="833157797"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{289, 13}, {21, 21}}</string>
|
||||
<reference key="NSSuperview" ref="833157797"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<int key="IBUIContentMode">8</int>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIImageView" id="408162837">
|
||||
<reference key="NSNextResponder" ref="833157797"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{10, 13}, {21, 21}}</string>
|
||||
<reference key="NSSuperview" ref="833157797"/>
|
||||
<reference key="NSNextKeyView" ref="213296969"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<int key="IBUIContentMode">7</int>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 43}</string>
|
||||
<reference key="NSSuperview" ref="699910302"/>
|
||||
<reference key="NSNextKeyView" ref="408162837"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<int key="IBUIContentMode">4</int>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 44}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSNextKeyView" ref="833157797"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUISelectionStyle">0</int>
|
||||
<reference key="IBUIContentView" ref="833157797"/>
|
||||
<string key="IBUIReuseIdentifier">PSSliderSpecifier</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">slider</string>
|
||||
<reference key="source" ref="699910302"/>
|
||||
<reference key="destination" ref="213296969"/>
|
||||
</object>
|
||||
<int key="connectionID">12</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">maxImage</string>
|
||||
<reference key="source" ref="699910302"/>
|
||||
<reference key="destination" ref="343121076"/>
|
||||
</object>
|
||||
<int key="connectionID">13</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">minImage</string>
|
||||
<reference key="source" ref="699910302"/>
|
||||
<reference key="destination" ref="408162837"/>
|
||||
</object>
|
||||
<int key="connectionID">14</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<object class="NSArray" key="object" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="371349661"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="699910302"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="408162837"/>
|
||||
<reference ref="343121076"/>
|
||||
<reference ref="213296969"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="213296969"/>
|
||||
<reference key="parent" ref="699910302"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="343121076"/>
|
||||
<reference key="parent" ref="699910302"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="408162837"/>
|
||||
<reference key="parent" ref="699910302"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.IBPluginDependency</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>-2.IBPluginDependency</string>
|
||||
<string>2.CustomClassName</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>3.CustomClassName</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
<string>6.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>UIResponder</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKPSSliderSpecifierViewCell</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKSlider</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">14</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1296" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">1179</string>
|
||||
</data>
|
||||
</archive>
|
||||
254
InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib
Normal file
254
InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib
Normal file
|
|
@ -0,0 +1,254 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1296</int>
|
||||
<string key="IBDocument.SystemVersion">11D50</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1179</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IBUITableViewCell</string>
|
||||
<string>IBUILabel</string>
|
||||
<string>IBUITextField</string>
|
||||
<string>IBProxyObject</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="371349661">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUITableViewCell" id="639928991">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">290</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIView" id="642554623">
|
||||
<reference key="NSNextResponder" ref="639928991"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUILabel" id="68117349">
|
||||
<reference key="NSNextResponder" ref="642554623"/>
|
||||
<int key="NSvFlags">294</int>
|
||||
<string key="NSFrame">{{9, 11}, {240, 21}}</string>
|
||||
<reference key="NSSuperview" ref="642554623"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<string key="IBUIText">Label</string>
|
||||
<object class="NSColor" key="IBUITextColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MCAwIDAAA</bytes>
|
||||
</object>
|
||||
<nil key="IBUIHighlightedColor"/>
|
||||
<int key="IBUIBaselineAdjustment">1</int>
|
||||
<float key="IBUIMinimumFontSize">10</float>
|
||||
<object class="IBUIFontDescription" key="IBUIFontDescription">
|
||||
<string key="name">Helvetica-Bold</string>
|
||||
<string key="family">Helvetica</string>
|
||||
<int key="traits">2</int>
|
||||
<double key="pointSize">17</double>
|
||||
</object>
|
||||
<object class="NSFont" key="IBUIFont">
|
||||
<string key="NSName">Helvetica-Bold</string>
|
||||
<double key="NSSize">17</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUITextField" id="239084550">
|
||||
<reference key="NSNextResponder" ref="642554623"/>
|
||||
<int key="NSvFlags">291</int>
|
||||
<string key="NSFrame">{{100, 11}, {201, 21}}</string>
|
||||
<reference key="NSSuperview" ref="642554623"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<string key="IBUIText">hello</string>
|
||||
<object class="NSColor" key="IBUITextColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC4yNzQ1MDk4MiAwLjM3NjQ3MDYgMC41MjE1Njg2NgA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIAdjustsFontSizeToFit">YES</bool>
|
||||
<float key="IBUIMinimumFontSize">10</float>
|
||||
<object class="IBUITextInputTraits" key="IBUITextInputTraits">
|
||||
<int key="IBUIReturnKeyType">9</int>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIFontDescription" key="IBUIFontDescription">
|
||||
<string key="name">Helvetica</string>
|
||||
<string key="family">Helvetica</string>
|
||||
<int key="traits">0</int>
|
||||
<double key="pointSize">17</double>
|
||||
</object>
|
||||
<object class="NSFont" key="IBUIFont">
|
||||
<string key="NSName">Helvetica</string>
|
||||
<double key="NSSize">17</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 43}</string>
|
||||
<reference key="NSSuperview" ref="639928991"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<int key="IBUIContentMode">4</int>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 44}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUISelectionStyle">0</int>
|
||||
<reference key="IBUIContentView" ref="642554623"/>
|
||||
<string key="IBUIReuseIdentifier">PSTextFieldSpecifier</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">label</string>
|
||||
<reference key="source" ref="639928991"/>
|
||||
<reference key="destination" ref="68117349"/>
|
||||
</object>
|
||||
<int key="connectionID">8</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">textField</string>
|
||||
<reference key="source" ref="639928991"/>
|
||||
<reference key="destination" ref="239084550"/>
|
||||
</object>
|
||||
<int key="connectionID">9</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<object class="NSArray" key="object" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="371349661"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="639928991"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="239084550"/>
|
||||
<reference ref="68117349"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="68117349"/>
|
||||
<reference key="parent" ref="639928991"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="239084550"/>
|
||||
<reference key="parent" ref="639928991"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.IBPluginDependency</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>-2.IBPluginDependency</string>
|
||||
<string>2.CustomClassName</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
<string>4.CustomClassName</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>UIResponder</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKPSTextFieldSpecifierViewCell</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKTextField</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">9</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1296" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">1179</string>
|
||||
</data>
|
||||
</archive>
|
||||
237
InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib
Normal file
237
InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1296</int>
|
||||
<string key="IBDocument.SystemVersion">11D50</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1179</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IBUITableViewCell</string>
|
||||
<string>IBUISwitch</string>
|
||||
<string>IBUILabel</string>
|
||||
<string>IBProxyObject</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="371349661">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUITableViewCell" id="507262743">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">290</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIView" id="659685403">
|
||||
<reference key="NSNextResponder" ref="507262743"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUILabel" id="697203718">
|
||||
<reference key="NSNextResponder" ref="659685403"/>
|
||||
<int key="NSvFlags">294</int>
|
||||
<string key="NSFrame">{{9, 10}, {200, 21}}</string>
|
||||
<reference key="NSSuperview" ref="659685403"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<string key="IBUIText">Label</string>
|
||||
<object class="NSColor" key="IBUITextColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MCAwIDAAA</bytes>
|
||||
</object>
|
||||
<nil key="IBUIHighlightedColor"/>
|
||||
<int key="IBUIBaselineAdjustment">1</int>
|
||||
<float key="IBUIMinimumFontSize">10</float>
|
||||
<object class="IBUIFontDescription" key="IBUIFontDescription">
|
||||
<string key="name">Helvetica-Bold</string>
|
||||
<string key="family">Helvetica</string>
|
||||
<int key="traits">2</int>
|
||||
<double key="pointSize">17</double>
|
||||
</object>
|
||||
<object class="NSFont" key="IBUIFont">
|
||||
<string key="NSName">Helvetica-Bold</string>
|
||||
<double key="NSSize">17</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUISwitch" id="297989004">
|
||||
<reference key="NSNextResponder" ref="659685403"/>
|
||||
<int key="NSvFlags">289</int>
|
||||
<string key="NSFrame">{{218, 8}, {94, 27}}</string>
|
||||
<reference key="NSSuperview" ref="659685403"/>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUIContentHorizontalAlignment">0</int>
|
||||
<int key="IBUIContentVerticalAlignment">0</int>
|
||||
<bool key="IBUIOn">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 43}</string>
|
||||
<reference key="NSSuperview" ref="507262743"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<int key="IBUIContentMode">4</int>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 44}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUISelectionStyle">0</int>
|
||||
<reference key="IBUIContentView" ref="659685403"/>
|
||||
<string key="IBUIReuseIdentifier">PSToggleSwitchSpecifier</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">toggle</string>
|
||||
<reference key="source" ref="507262743"/>
|
||||
<reference key="destination" ref="297989004"/>
|
||||
</object>
|
||||
<int key="connectionID">8</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">label</string>
|
||||
<reference key="source" ref="507262743"/>
|
||||
<reference key="destination" ref="697203718"/>
|
||||
</object>
|
||||
<int key="connectionID">9</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<object class="NSArray" key="object" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="371349661"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="507262743"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="697203718"/>
|
||||
<reference ref="297989004"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Toggle Switch Specifier View Cell - PSToggleSwitchSpecifier</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="697203718"/>
|
||||
<reference key="parent" ref="507262743"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="297989004"/>
|
||||
<reference key="parent" ref="507262743"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.IBPluginDependency</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>-2.IBPluginDependency</string>
|
||||
<string>2.CustomClassName</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
<string>4.CustomClassName</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>UIResponder</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKPSToggleSwitchSpecifierViewCell</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKSwitch</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">9</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1296" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">1179</string>
|
||||
</data>
|
||||
</archive>
|
||||
255
InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib
Normal file
255
InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib
Normal file
|
|
@ -0,0 +1,255 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">768</int>
|
||||
<string key="IBDocument.SystemVersion">10J567</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">1294</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||
<string key="IBDocument.HIToolboxVersion">462.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">294</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IBProxyObject</string>
|
||||
<string>IBUIView</string>
|
||||
<string>IBUITableView</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="372490531">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="975951072">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIView" id="191373211">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUITableView" id="575792171">
|
||||
<reference key="NSNextResponder" ref="191373211"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview" ref="191373211"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">10</int>
|
||||
<object class="NSImage" key="NSImage">
|
||||
<int key="NSImageFlags">549453824</int>
|
||||
<string key="NSSize">{84, 1}</string>
|
||||
<object class="NSMutableArray" key="NSReps">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="0"/>
|
||||
<object class="NSBitmapImageRep">
|
||||
<object class="NSData" key="NSTIFFRepresentation">
|
||||
<bytes key="NS.bytes">TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
|
||||
y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
|
||||
xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
|
||||
xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
|
||||
xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
|
||||
xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB
|
||||
AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
|
||||
AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS
|
||||
AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<string key="IBUIColorCocoaTouchKeyPath">groupTableViewBackgroundColor</string>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIBouncesZoom">NO</bool>
|
||||
<int key="IBUIStyle">1</int>
|
||||
<int key="IBUISeparatorStyle">1</int>
|
||||
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
|
||||
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
|
||||
<float key="IBUIRowHeight">44</float>
|
||||
<float key="IBUISectionHeaderHeight">10</float>
|
||||
<float key="IBUISectionFooterHeight">10</float>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="575792171"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
<object class="NSColorSpace" key="NSCustomColorSpace">
|
||||
<int key="NSID">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="191373211"/>
|
||||
</object>
|
||||
<int key="connectionID">3</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="575792171"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">5</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="575792171"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
</object>
|
||||
<int key="connectionID">6</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">_tableView</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="575792171"/>
|
||||
</object>
|
||||
<int key="connectionID">7</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="191373211"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="575792171"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="372490531"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="975951072"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="575792171"/>
|
||||
<reference key="parent" ref="191373211"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>1.IBEditorWindowLastContentRect</string>
|
||||
<string>1.IBPluginDependency</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>IASKSpecifierValuesViewController</string>
|
||||
<string>UIResponder</string>
|
||||
<string>{{556, 432}, {320, 460}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">7</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">IASKSpecifierValuesViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">_tableView</string>
|
||||
<string key="NS.object.0">UITableView</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">_tableView</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">_tableView</string>
|
||||
<string key="candidateClassName">UITableView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/IASKSpecifierValuesViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<integer value="768" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">294</string>
|
||||
</data>
|
||||
</archive>
|
||||
|
|
@ -2,13 +2,13 @@
|
|||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">784</int>
|
||||
<string key="IBDocument.SystemVersion">11D50b</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.32</string>
|
||||
<string key="IBDocument.HIToolboxVersion">568.00</string>
|
||||
<string key="IBDocument.SystemVersion">11C74</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.23</string>
|
||||
<string key="IBDocument.HIToolboxVersion">567.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">1181</string>
|
||||
<string key="NS.object.0">933</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
|
@ -19,6 +19,9 @@
|
|||
<string>IBUITabBarController</string>
|
||||
<string>IBUIWindow</string>
|
||||
<string>IBUITabBar</string>
|
||||
<string>IBUINavigationController</string>
|
||||
<string>IBUINavigationBar</string>
|
||||
<string>IBUINavigationItem</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
|
@ -42,11 +45,10 @@
|
|||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIWindow" id="380026005">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">1316</int>
|
||||
<object class="NSPSMatrix" key="NSFrameMatrix"/>
|
||||
<string key="NSFrameSize">{320, 480}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
||||
|
|
@ -65,15 +67,10 @@
|
|||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
<object class="IBUIViewController" key="IBUISelectedViewController" id="156830991">
|
||||
<string key="IBUITitle">History</string>
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="1041279701">
|
||||
<string key="IBUITitle">History</string>
|
||||
<object class="NSCustomResource" key="IBUIImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">history-orange.png</string>
|
||||
</object>
|
||||
<object class="IBUINavigationController" key="IBUISelectedViewController" id="695567073">
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="461463762">
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUISystemItemIdentifier">0</int>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="952473143"/>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
|
|
@ -81,12 +78,87 @@
|
|||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<bool key="IBUIDefinesPresentationContext">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
<object class="IBUINavigationBar" key="IBUINavigationBar" id="1050547958">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{0, 0}</string>
|
||||
<string key="NSReuseIdentifierKey">_NS:451</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBUIViewControllers">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIViewController" id="598026987">
|
||||
<string key="IBUITitle">Informations</string>
|
||||
<object class="IBUINavigationItem" key="IBUINavigationItem" id="37830463">
|
||||
<string key="IBUITitle">Information</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="695567073"/>
|
||||
<string key="IBUINibName">MoreViewController</string>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBUIViewControllers">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="156830991"/>
|
||||
<object class="IBUINavigationController" id="1034303701">
|
||||
<string key="IBUITitle">Call logs</string>
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="291051400">
|
||||
<string key="IBUITitle">History</string>
|
||||
<object class="NSCustomResource" key="IBUIImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">history-orange.png</string>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="952473143"/>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<bool key="IBUIDefinesPresentationContext">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
<object class="IBUINavigationBar" key="IBUINavigationBar" id="365650648">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{0, 0}</string>
|
||||
<string key="NSReuseIdentifierKey">_NS:451</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBUIViewControllers">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIViewController" id="362626763">
|
||||
<string key="IBUITitle">Call logs</string>
|
||||
<object class="IBUINavigationItem" key="IBUINavigationItem" id="145216913">
|
||||
<string key="IBUITitle">Call logs</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="1034303701"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUIViewController" id="258574391">
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="64474689">
|
||||
<string key="IBUITitle">Dialer</string>
|
||||
|
|
@ -106,26 +178,12 @@
|
|||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
<object class="IBUIViewController" id="383050823">
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="672878446">
|
||||
<object class="IBUIViewController" id="542510575">
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="1007281477">
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUISystemItemIdentifier">5</int>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="952473143"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
<object class="IBUIViewController" id="555899988">
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="534357631">
|
||||
<string key="IBUITitle"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUISystemItemIdentifier">0</int>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="952473143"/>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
|
|
@ -134,12 +192,59 @@
|
|||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
<object class="IBUINavigationController" id="504332192">
|
||||
<object class="IBUITabBarItem" key="IBUITabBarItem" id="598644199">
|
||||
<string key="IBUITitle">Settings</string>
|
||||
<object class="NSCustomResource" key="IBUIImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">20-gear2.png</string>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="952473143"/>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<bool key="IBUIDefinesPresentationContext">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
<object class="IBUINavigationBar" key="IBUINavigationBar" id="698528405">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{0, 0}</string>
|
||||
<string key="NSReuseIdentifierKey">_NS:451</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBUIViewControllers">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIViewController" id="1009346023">
|
||||
<object class="IBUINavigationItem" key="IBUINavigationItem" id="302143822">
|
||||
<string key="IBUITitle">Root View Controller</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="504332192"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="IBUIInterfaceOrientation">1</int>
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<reference ref="695567073"/>
|
||||
</object>
|
||||
<object class="IBUITabBar" key="IBUITabBar" id="995238651">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{0, 431}, {320, 49}}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwAA</bytes>
|
||||
|
|
@ -176,6 +281,38 @@
|
|||
</object>
|
||||
<int key="connectionID">14</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">myPhoneViewController</string>
|
||||
<reference key="source" ref="987256611"/>
|
||||
<reference key="destination" ref="258574391"/>
|
||||
</object>
|
||||
<int key="connectionID">51</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">moreNavigationController</string>
|
||||
<reference key="source" ref="987256611"/>
|
||||
<reference key="destination" ref="695567073"/>
|
||||
</object>
|
||||
<int key="connectionID">58</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">settingsController</string>
|
||||
<reference key="source" ref="987256611"/>
|
||||
<reference key="destination" ref="1009346023"/>
|
||||
</object>
|
||||
<int key="connectionID">74</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">myTabBarController</string>
|
||||
<reference key="source" ref="258574391"/>
|
||||
<reference key="destination" ref="952473143"/>
|
||||
</object>
|
||||
<int key="connectionID">59</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
|
|
@ -216,10 +353,11 @@
|
|||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="995238651"/>
|
||||
<reference ref="383050823"/>
|
||||
<reference ref="555899988"/>
|
||||
<reference ref="156830991"/>
|
||||
<reference ref="258574391"/>
|
||||
<reference ref="695567073"/>
|
||||
<reference ref="542510575"/>
|
||||
<reference ref="504332192"/>
|
||||
<reference ref="1034303701"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
|
|
@ -228,21 +366,6 @@
|
|||
<reference key="object" ref="995238651"/>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">11</int>
|
||||
<reference key="object" ref="383050823"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="672878446"/>
|
||||
</object>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
<string key="objectName">Contacts</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">12</int>
|
||||
<reference key="object" ref="672878446"/>
|
||||
<reference key="parent" ref="383050823"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">38</int>
|
||||
<reference key="object" ref="258574391"/>
|
||||
|
|
@ -259,34 +382,124 @@
|
|||
<reference key="parent" ref="258574391"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">41</int>
|
||||
<reference key="object" ref="156830991"/>
|
||||
<int key="objectID">53</int>
|
||||
<reference key="object" ref="695567073"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1041279701"/>
|
||||
<reference ref="1050547958"/>
|
||||
<reference ref="598026987"/>
|
||||
<reference ref="461463762"/>
|
||||
</object>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
<string key="objectName">history</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">42</int>
|
||||
<reference key="object" ref="1041279701"/>
|
||||
<reference key="parent" ref="156830991"/>
|
||||
<int key="objectID">54</int>
|
||||
<reference key="object" ref="1050547958"/>
|
||||
<reference key="parent" ref="695567073"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">43</int>
|
||||
<reference key="object" ref="555899988"/>
|
||||
<int key="objectID">55</int>
|
||||
<reference key="object" ref="598026987"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="534357631"/>
|
||||
<reference ref="37830463"/>
|
||||
</object>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
<string key="objectName">more</string>
|
||||
<reference key="parent" ref="695567073"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">44</int>
|
||||
<reference key="object" ref="534357631"/>
|
||||
<reference key="parent" ref="555899988"/>
|
||||
<int key="objectID">56</int>
|
||||
<reference key="object" ref="37830463"/>
|
||||
<reference key="parent" ref="598026987"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">57</int>
|
||||
<reference key="object" ref="461463762"/>
|
||||
<reference key="parent" ref="695567073"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">66</int>
|
||||
<reference key="object" ref="542510575"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1007281477"/>
|
||||
</object>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
<string key="objectName">dummy-contact-replaced-in-code</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">67</int>
|
||||
<reference key="object" ref="1007281477"/>
|
||||
<reference key="parent" ref="542510575"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">69</int>
|
||||
<reference key="object" ref="504332192"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="698528405"/>
|
||||
<reference ref="1009346023"/>
|
||||
<reference ref="598644199"/>
|
||||
</object>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">70</int>
|
||||
<reference key="object" ref="698528405"/>
|
||||
<reference key="parent" ref="504332192"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">71</int>
|
||||
<reference key="object" ref="1009346023"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="302143822"/>
|
||||
</object>
|
||||
<reference key="parent" ref="504332192"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">72</int>
|
||||
<reference key="object" ref="302143822"/>
|
||||
<reference key="parent" ref="1009346023"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">73</int>
|
||||
<reference key="object" ref="598644199"/>
|
||||
<reference key="parent" ref="504332192"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">75</int>
|
||||
<reference key="object" ref="1034303701"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="365650648"/>
|
||||
<reference ref="362626763"/>
|
||||
<reference ref="291051400"/>
|
||||
</object>
|
||||
<reference key="parent" ref="952473143"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">76</int>
|
||||
<reference key="object" ref="365650648"/>
|
||||
<reference key="parent" ref="1034303701"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">77</int>
|
||||
<reference key="object" ref="362626763"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="145216913"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1034303701"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">78</int>
|
||||
<reference key="object" ref="145216913"/>
|
||||
<reference key="parent" ref="362626763"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">79</int>
|
||||
<reference key="object" ref="291051400"/>
|
||||
<reference key="parent" ref="1034303701"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
|
|
@ -298,8 +511,6 @@
|
|||
<string>-1.IBPluginDependency</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>-2.IBPluginDependency</string>
|
||||
<string>11.IBPluginDependency</string>
|
||||
<string>12.IBPluginDependency</string>
|
||||
<string>2.IBAttributePlaceholdersKey</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>38.CustomClassName</string>
|
||||
|
|
@ -307,23 +518,35 @@
|
|||
<string>39.IBPluginDependency</string>
|
||||
<string>4.CustomClassName</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
<string>41.CustomClassName</string>
|
||||
<string>41.IBPluginDependency</string>
|
||||
<string>42.IBPluginDependency</string>
|
||||
<string>43.CustomClassName</string>
|
||||
<string>43.IBPluginDependency</string>
|
||||
<string>44.IBPluginDependency</string>
|
||||
<string>53.IBPluginDependency</string>
|
||||
<string>54.IBPluginDependency</string>
|
||||
<string>55.CustomClassName</string>
|
||||
<string>55.IBPluginDependency</string>
|
||||
<string>56.IBPluginDependency</string>
|
||||
<string>57.IBPluginDependency</string>
|
||||
<string>66.IBPluginDependency</string>
|
||||
<string>67.IBPluginDependency</string>
|
||||
<string>69.IBPluginDependency</string>
|
||||
<string>70.IBPluginDependency</string>
|
||||
<string>71.CustomClassName</string>
|
||||
<string>71.IBPluginDependency</string>
|
||||
<string>72.IBPluginDependency</string>
|
||||
<string>73.IBPluginDependency</string>
|
||||
<string>75.IBPluginDependency</string>
|
||||
<string>76.IBPluginDependency</string>
|
||||
<string>77.CustomClassName</string>
|
||||
<string>77.IBPluginDependency</string>
|
||||
<string>78.IBPluginDependency</string>
|
||||
<string>79.IBPluginDependency</string>
|
||||
<string>8.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>UIApplication</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>UIResponder</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<object class="NSMutableDictionary">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
|
|
@ -335,7 +558,6 @@
|
|||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>linphoneAppDelegate</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>CallHistoryTableViewController</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>MoreViewController</string>
|
||||
|
|
@ -343,6 +565,21 @@
|
|||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>IASKAppSettingsViewController</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>CallHistoryTableViewController</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
|
|
@ -357,7 +594,7 @@
|
|||
<reference key="dict.values" ref="0"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">48</int>
|
||||
<int key="maxID">79</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
|
|
@ -366,10 +603,6 @@
|
|||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<integer value="784" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<real value="1296" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
|
|
@ -380,15 +613,17 @@
|
|||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>20-gear2.png</string>
|
||||
<string>dialer-orange.png</string>
|
||||
<string>history-orange.png</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>{26, 28}</string>
|
||||
<string>{25, 24}</string>
|
||||
<string>{25, 23}</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="IBCocoaTouchPluginVersion">1181</string>
|
||||
<string key="IBCocoaTouchPluginVersion">933</string>
|
||||
</data>
|
||||
</archive>
|
||||
|
|
|
|||
|
|
@ -94,6 +94,16 @@
|
|||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>Enable video</string>
|
||||
<key>Key</key>
|
||||
<string>enable_video_preference</string>
|
||||
<key>DefaultValue</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
|
|
|
|||
|
|
@ -4,16 +4,6 @@
|
|||
<dict>
|
||||
<key>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>Enable video</string>
|
||||
<key>Key</key>
|
||||
<string>enable_video_preference</string>
|
||||
<key>DefaultValue</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
|
|
|
|||
|
|
@ -220,6 +220,52 @@
|
|||
340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */; };
|
||||
340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; };
|
||||
340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; };
|
||||
34151FE01563A8D800205A0E /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */; };
|
||||
34151FE11563A8D800205A0E /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */; };
|
||||
34151FE21563A8D800205A0E /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */; };
|
||||
34151FE31563A8D800205A0E /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC11563A8D800205A0E /* IASKSettingsReader.m */; };
|
||||
34151FE41563A8D800205A0E /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC31563A8D800205A0E /* IASKSettingsStore.m */; };
|
||||
34151FE51563A8D800205A0E /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */; };
|
||||
34151FE61563A8D800205A0E /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */; };
|
||||
34151FE71563A8D800205A0E /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC91563A8D800205A0E /* IASKSpecifier.m */; };
|
||||
34151FE81563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */; };
|
||||
34151FE91563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */; };
|
||||
34151FEA1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */; };
|
||||
34151FEB1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */; };
|
||||
34151FEC1563A8D800205A0E /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD41563A8D800205A0E /* IASKSlider.m */; };
|
||||
34151FED1563A8D800205A0E /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD61563A8D800205A0E /* IASKSwitch.m */; };
|
||||
34151FEE1563A8D800205A0E /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD81563A8D800205A0E /* IASKTextField.m */; };
|
||||
34151FEF1563A8D800205A0E /* IASKAppSettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */; };
|
||||
34151FF01563A8D800205A0E /* IASKAppSettingsWebView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */; };
|
||||
34151FF11563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */; };
|
||||
34151FF21563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */; };
|
||||
34151FF31563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
||||
34151FF41563A8D800205A0E /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */; };
|
||||
34151FF61563A92100205A0E /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */; };
|
||||
34151FF71563A92100205A0E /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */; };
|
||||
34151FF81563A92100205A0E /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */; };
|
||||
34151FF91563A92900205A0E /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC11563A8D800205A0E /* IASKSettingsReader.m */; };
|
||||
34151FFA1563A92900205A0E /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC31563A8D800205A0E /* IASKSettingsStore.m */; };
|
||||
34151FFB1563A92900205A0E /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */; };
|
||||
34151FFC1563A92900205A0E /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */; };
|
||||
34151FFD1563A92900205A0E /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC91563A8D800205A0E /* IASKSpecifier.m */; };
|
||||
34151FFE1563A93400205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */; };
|
||||
34151FFF1563A93400205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */; };
|
||||
341520001563A93400205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */; };
|
||||
341520011563A93400205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */; };
|
||||
341520021563A93400205A0E /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD41563A8D800205A0E /* IASKSlider.m */; };
|
||||
341520031563A93400205A0E /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD61563A8D800205A0E /* IASKSwitch.m */; };
|
||||
341520041563A93400205A0E /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD81563A8D800205A0E /* IASKTextField.m */; };
|
||||
341520051563A93B00205A0E /* IASKAppSettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */; };
|
||||
341520061563A93B00205A0E /* IASKAppSettingsWebView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */; };
|
||||
341520071563A93B00205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */; };
|
||||
341520081563A93B00205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */; };
|
||||
341520091563A93B00205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
||||
3415200A1563A93B00205A0E /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */; };
|
||||
3415205A1563AA8F00205A0E /* 20-gear2.png in Resources */ = {isa = PBXBuildFile; fileRef = 341520591563AA8F00205A0E /* 20-gear2.png */; };
|
||||
3415205C1563ABEB00205A0E /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3415205B1563ABEB00205A0E /* MessageUI.framework */; };
|
||||
3415207B156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */; };
|
||||
3415207C156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */; };
|
||||
3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; };
|
||||
3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; };
|
||||
3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */; };
|
||||
|
|
@ -622,6 +668,47 @@
|
|||
340751E5150F38FC00B89C47 /* UIToggleVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleVideoButton.h; sourceTree = "<group>"; };
|
||||
340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleVideoButton.m; sourceTree = "<group>"; };
|
||||
340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = "<group>"; };
|
||||
34151FB81563A8D800205A0E /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = "<group>"; };
|
||||
34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = "<group>"; };
|
||||
34151FBA1563A8D800205A0E /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = "<group>"; };
|
||||
34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsWebViewController.m; sourceTree = "<group>"; };
|
||||
34151FBC1563A8D800205A0E /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = "<group>"; };
|
||||
34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = "<group>"; };
|
||||
34151FBE1563A8D800205A0E /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = "<group>"; };
|
||||
34151FC01563A8D800205A0E /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = "<group>"; };
|
||||
34151FC11563A8D800205A0E /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsReader.m; sourceTree = "<group>"; };
|
||||
34151FC21563A8D800205A0E /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = "<group>"; };
|
||||
34151FC31563A8D800205A0E /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = "<group>"; };
|
||||
34151FC41563A8D800205A0E /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = "<group>"; };
|
||||
34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreFile.m; sourceTree = "<group>"; };
|
||||
34151FC61563A8D800205A0E /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = "<group>"; };
|
||||
34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = "<group>"; };
|
||||
34151FC81563A8D800205A0E /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = "<group>"; };
|
||||
34151FC91563A8D800205A0E /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = "<group>"; };
|
||||
34151FCB1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = "<group>"; };
|
||||
34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = "<group>"; };
|
||||
34151FCD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = "<group>"; };
|
||||
34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = "<group>"; };
|
||||
34151FCF1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = "<group>"; };
|
||||
34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = "<group>"; };
|
||||
34151FD11563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSToggleSwitchSpecifierViewCell.h; sourceTree = "<group>"; };
|
||||
34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSToggleSwitchSpecifierViewCell.m; sourceTree = "<group>"; };
|
||||
34151FD31563A8D800205A0E /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = "<group>"; };
|
||||
34151FD41563A8D800205A0E /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = "<group>"; };
|
||||
34151FD51563A8D800205A0E /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = "<group>"; };
|
||||
34151FD61563A8D800205A0E /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = "<group>"; };
|
||||
34151FD71563A8D800205A0E /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = "<group>"; };
|
||||
34151FD81563A8D800205A0E /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = "<group>"; };
|
||||
34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKAppSettingsView.xib; sourceTree = "<group>"; };
|
||||
34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKAppSettingsWebView.xib; sourceTree = "<group>"; };
|
||||
34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSSliderSpecifierViewCell.xib; sourceTree = "<group>"; };
|
||||
34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSTextFieldSpecifierViewCell.xib; sourceTree = "<group>"; };
|
||||
34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; };
|
||||
34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; };
|
||||
341520591563AA8F00205A0E /* 20-gear2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "20-gear2.png"; path = "Resources/20-gear2.png"; sourceTree = "<group>"; };
|
||||
3415205B1563ABEB00205A0E /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
|
||||
34152079156BBEC000205A0E /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = "<group>"; };
|
||||
3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = "<group>"; };
|
||||
3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = "<group>"; };
|
||||
3418844514C6CAD300EA48C7 /* StatusSubViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatusSubViewController.h; sourceTree = "<group>"; };
|
||||
3418844614C6CAD300EA48C7 /* StatusSubViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusSubViewController.m; sourceTree = "<group>"; };
|
||||
|
|
@ -667,6 +754,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3415205C1563ABEB00205A0E /* MessageUI.framework in Frameworks */,
|
||||
340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */,
|
||||
226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */,
|
||||
226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */,
|
||||
|
|
@ -809,6 +897,8 @@
|
|||
3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */,
|
||||
34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */,
|
||||
34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */,
|
||||
34152079156BBEC000205A0E /* LinphoneCoreSettingsStore.h */,
|
||||
3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -1135,6 +1225,8 @@
|
|||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3415205B1563ABEB00205A0E /* MessageUI.framework */,
|
||||
34151FB61563A8D800205A0E /* InAppSettingsKit */,
|
||||
340751961506459A00B89C47 /* CoreTelephony.framework */,
|
||||
226CDADD14E2D0B800513B67 /* libbcg729.a */,
|
||||
226CDADE14E2D0B800513B67 /* libmsbcg729.a */,
|
||||
|
|
@ -1209,6 +1301,7 @@
|
|||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
341520591563AA8F00205A0E /* 20-gear2.png */,
|
||||
3485649D152C423F003FE041 /* in_call_video.png */,
|
||||
3485649E152C423F003FE041 /* out_call_video.png */,
|
||||
34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */,
|
||||
|
|
@ -1272,6 +1365,82 @@
|
|||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34151FB61563A8D800205A0E /* InAppSettingsKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34151FB71563A8D800205A0E /* Controllers */,
|
||||
34151FBF1563A8D800205A0E /* Models */,
|
||||
34151FCA1563A8D800205A0E /* Views */,
|
||||
34151FD91563A8D800205A0E /* Xibs */,
|
||||
);
|
||||
path = InAppSettingsKit;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34151FB71563A8D800205A0E /* Controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34151FB81563A8D800205A0E /* IASKAppSettingsViewController.h */,
|
||||
34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */,
|
||||
34151FBA1563A8D800205A0E /* IASKAppSettingsWebViewController.h */,
|
||||
34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */,
|
||||
34151FBC1563A8D800205A0E /* IASKSpecifierValuesViewController.h */,
|
||||
34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */,
|
||||
34151FBE1563A8D800205A0E /* IASKViewController.h */,
|
||||
);
|
||||
path = Controllers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34151FBF1563A8D800205A0E /* Models */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34151FC01563A8D800205A0E /* IASKSettingsReader.h */,
|
||||
34151FC11563A8D800205A0E /* IASKSettingsReader.m */,
|
||||
34151FC21563A8D800205A0E /* IASKSettingsStore.h */,
|
||||
34151FC31563A8D800205A0E /* IASKSettingsStore.m */,
|
||||
34151FC41563A8D800205A0E /* IASKSettingsStoreFile.h */,
|
||||
34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */,
|
||||
34151FC61563A8D800205A0E /* IASKSettingsStoreUserDefaults.h */,
|
||||
34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */,
|
||||
34151FC81563A8D800205A0E /* IASKSpecifier.h */,
|
||||
34151FC91563A8D800205A0E /* IASKSpecifier.m */,
|
||||
);
|
||||
path = Models;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34151FCA1563A8D800205A0E /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34151FCB1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.h */,
|
||||
34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */,
|
||||
34151FCD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.h */,
|
||||
34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */,
|
||||
34151FCF1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.h */,
|
||||
34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */,
|
||||
34151FD11563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.h */,
|
||||
34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */,
|
||||
34151FD31563A8D800205A0E /* IASKSlider.h */,
|
||||
34151FD41563A8D800205A0E /* IASKSlider.m */,
|
||||
34151FD51563A8D800205A0E /* IASKSwitch.h */,
|
||||
34151FD61563A8D800205A0E /* IASKSwitch.m */,
|
||||
34151FD71563A8D800205A0E /* IASKTextField.h */,
|
||||
34151FD81563A8D800205A0E /* IASKTextField.m */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
34151FD91563A8D800205A0E /* Xibs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */,
|
||||
34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */,
|
||||
34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */,
|
||||
34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */,
|
||||
34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */,
|
||||
34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */,
|
||||
);
|
||||
path = Xibs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
|
|
@ -1413,6 +1582,13 @@
|
|||
34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */,
|
||||
3485649F152C423F003FE041 /* in_call_video.png in Resources */,
|
||||
348564A0152C423F003FE041 /* out_call_video.png in Resources */,
|
||||
34151FEF1563A8D800205A0E /* IASKAppSettingsView.xib in Resources */,
|
||||
34151FF01563A8D800205A0E /* IASKAppSettingsWebView.xib in Resources */,
|
||||
34151FF11563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */,
|
||||
34151FF21563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */,
|
||||
34151FF31563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */,
|
||||
34151FF41563A8D800205A0E /* IASKSpecifierValuesView.xib in Resources */,
|
||||
3415205A1563AA8F00205A0E /* 20-gear2.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -1483,6 +1659,12 @@
|
|||
3418845D14C7077400EA48C7 /* status_gray.png in Resources */,
|
||||
57282931154AF1460076F540 /* history-orange.png in Resources */,
|
||||
57282933154AF14D0076F540 /* dialer-orange.png in Resources */,
|
||||
341520051563A93B00205A0E /* IASKAppSettingsView.xib in Resources */,
|
||||
341520061563A93B00205A0E /* IASKAppSettingsWebView.xib in Resources */,
|
||||
341520071563A93B00205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */,
|
||||
341520081563A93B00205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */,
|
||||
341520091563A93B00205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */,
|
||||
3415200A1563A93B00205A0E /* IASKSpecifierValuesView.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -1522,6 +1704,22 @@
|
|||
3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */,
|
||||
340751E7150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */,
|
||||
34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */,
|
||||
34151FE01563A8D800205A0E /* IASKAppSettingsViewController.m in Sources */,
|
||||
34151FE11563A8D800205A0E /* IASKAppSettingsWebViewController.m in Sources */,
|
||||
34151FE21563A8D800205A0E /* IASKSpecifierValuesViewController.m in Sources */,
|
||||
34151FE31563A8D800205A0E /* IASKSettingsReader.m in Sources */,
|
||||
34151FE41563A8D800205A0E /* IASKSettingsStore.m in Sources */,
|
||||
34151FE51563A8D800205A0E /* IASKSettingsStoreFile.m in Sources */,
|
||||
34151FE61563A8D800205A0E /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||
34151FE71563A8D800205A0E /* IASKSpecifier.m in Sources */,
|
||||
34151FE81563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||
34151FE91563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||
34151FEA1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||
34151FEB1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||
34151FEC1563A8D800205A0E /* IASKSlider.m in Sources */,
|
||||
34151FED1563A8D800205A0E /* IASKSwitch.m in Sources */,
|
||||
34151FEE1563A8D800205A0E /* IASKTextField.m in Sources */,
|
||||
3415207B156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -1558,6 +1756,22 @@
|
|||
3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */,
|
||||
340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */,
|
||||
34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */,
|
||||
34151FF61563A92100205A0E /* IASKAppSettingsViewController.m in Sources */,
|
||||
34151FF71563A92100205A0E /* IASKAppSettingsWebViewController.m in Sources */,
|
||||
34151FF81563A92100205A0E /* IASKSpecifierValuesViewController.m in Sources */,
|
||||
34151FF91563A92900205A0E /* IASKSettingsReader.m in Sources */,
|
||||
34151FFA1563A92900205A0E /* IASKSettingsStore.m in Sources */,
|
||||
34151FFB1563A92900205A0E /* IASKSettingsStoreFile.m in Sources */,
|
||||
34151FFC1563A92900205A0E /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||
34151FFD1563A92900205A0E /* IASKSpecifier.m in Sources */,
|
||||
34151FFE1563A93400205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||
34151FFF1563A93400205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||
341520001563A93400205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||
341520011563A93400205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||
341520021563A93400205A0E /* IASKSlider.m in Sources */,
|
||||
341520031563A93400205A0E /* IASKSwitch.m in Sources */,
|
||||
341520041563A93400205A0E /* IASKTextField.m in Sources */,
|
||||
3415207C156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 04fa4d457b3b584eae8c5964a48a97ec4040c94a
|
||||
Subproject commit d0ced93c25f088c04a9f92b82aa41c5b1f271e23
|
||||
Loading…
Add table
Reference in a new issue