forked from mirrors/linphone-iphone
assistant: move link account to separate view
This commit is contained in:
parent
5167cdd6ac
commit
829e40a2e3
15 changed files with 633 additions and 227 deletions
29
Classes/AssistantLinkView.h
Normal file
29
Classes/AssistantLinkView.h
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
//
|
||||
// AssistantLinkView.h
|
||||
// linphone
|
||||
//
|
||||
// Created by Gautier Pelloux-Prayer on 29/08/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import "PhoneMainView.h"
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AssistantLinkView : UIViewController <UICompositeViewDelegate>
|
||||
@property(weak, nonatomic) IBOutlet UIView *linkAccountView;
|
||||
@property(weak, nonatomic) IBOutlet UIView *activateSMSView;
|
||||
|
||||
@property(weak, nonatomic) IBOutlet UIButton *countryButton;
|
||||
@property(weak, nonatomic) IBOutlet UITextField *countryCodeField;
|
||||
@property(weak, nonatomic) IBOutlet UITextField *activationCodeField;
|
||||
@property(weak, nonatomic) IBOutlet UIRoundBorderedButton *linkAccountButton;
|
||||
@property(weak, nonatomic) IBOutlet UIRoundBorderedButton *checkValidationButton;
|
||||
@property(weak, nonatomic) IBOutlet UIView *waitView;
|
||||
@property(weak, nonatomic) IBOutlet UITextField *phoneField;
|
||||
|
||||
- (IBAction)onLinkAccount:(id)sender;
|
||||
- (IBAction)onCheckValidationButton:(id)sender;
|
||||
- (IBAction)onCountryClick:(id)sender;
|
||||
- (IBAction)onDialerClick:(id)sender;
|
||||
|
||||
@end
|
||||
221
Classes/AssistantLinkView.m
Normal file
221
Classes/AssistantLinkView.m
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
//
|
||||
// AssistantLinkView.m
|
||||
// linphone
|
||||
//
|
||||
// Created by Gautier Pelloux-Prayer on 29/08/16.
|
||||
//
|
||||
//
|
||||
|
||||
#import <CoreTelephony/CTCarrier.h>
|
||||
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
|
||||
|
||||
#import "AssistantLinkView.h"
|
||||
|
||||
@implementation AssistantLinkView {
|
||||
LinphoneAccountCreator *account_creator;
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
|
||||
_linkAccountView.hidden = _activateSMSView.userInteractionEnabled = NO;
|
||||
_activateSMSView.hidden = _linkAccountView.userInteractionEnabled = YES;
|
||||
|
||||
account_creator = linphone_account_creator_new(
|
||||
LC, [LinphoneManager.instance lpConfigStringForKey:@"xmlrpc_url" inSection:@"assistant" withDefault:@""]
|
||||
.UTF8String);
|
||||
|
||||
linphone_account_creator_set_user_data(account_creator, (__bridge void *)(self));
|
||||
linphone_account_creator_cbs_set_link_phone_number_with_account(
|
||||
linphone_account_creator_get_callbacks(account_creator), assistant_link_phone_number_with_account);
|
||||
linphone_account_creator_cbs_set_activate_phone_number_link(linphone_account_creator_get_callbacks(account_creator),
|
||||
assistant_activate_phone_number_link);
|
||||
|
||||
LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC);
|
||||
if (cfg && strcmp("sip.linphone.org", linphone_proxy_config_get_domain(cfg)) == 0) {
|
||||
linphone_account_creator_set_username(
|
||||
account_creator, linphone_address_get_username(linphone_proxy_config_get_identity_address(cfg)));
|
||||
const LinphoneAuthInfo *info = linphone_proxy_config_find_auth_info(cfg);
|
||||
linphone_account_creator_set_password(account_creator, linphone_auth_info_get_passwd(info));
|
||||
linphone_account_creator_set_domain(account_creator, linphone_proxy_config_get_domain(cfg));
|
||||
} else {
|
||||
LOGW(@"Default proxy is NOT a sip.linphone.org, aborting");
|
||||
[PhoneMainView.instance popToView:DialerView.compositeViewDescription];
|
||||
}
|
||||
|
||||
CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];
|
||||
CTCarrier *carrier = networkInfo.subscriberCellularProvider;
|
||||
NSDictionary *country = [CountryListView countryWithIso:carrier.isoCountryCode];
|
||||
if (!country) {
|
||||
// fetch phone locale
|
||||
for (NSString *lang in [NSLocale preferredLanguages]) {
|
||||
NSUInteger idx = [lang rangeOfString:@"-"].location;
|
||||
idx = (idx == NSNotFound) ? idx = 0 : idx + 1;
|
||||
if ((country = [CountryListView countryWithIso:[lang substringFromIndex:idx]]) != nil)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (country) {
|
||||
[self didSelectCountry:country];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated {
|
||||
linphone_account_creator_unref(account_creator);
|
||||
[super viewDidDisappear:animated];
|
||||
}
|
||||
|
||||
#pragma mark - UICompositeViewDelegate Functions
|
||||
|
||||
static UICompositeViewDescription *compositeDescription = nil;
|
||||
|
||||
+ (UICompositeViewDescription *)compositeViewDescription {
|
||||
if (compositeDescription == nil) {
|
||||
compositeDescription = [[UICompositeViewDescription alloc] init:self.class
|
||||
statusBar:StatusBarView.class
|
||||
tabBar:nil
|
||||
sideMenu:SideMenuView.class
|
||||
fullscreen:false
|
||||
isLeftFragment:NO
|
||||
fragmentWith:nil];
|
||||
|
||||
compositeDescription.darkBackground = true;
|
||||
}
|
||||
return compositeDescription;
|
||||
}
|
||||
|
||||
- (UICompositeViewDescription *)compositeViewDescription {
|
||||
return self.class.compositeViewDescription;
|
||||
}
|
||||
|
||||
#pragma mark - popup
|
||||
|
||||
- (NSString *)stringForError:(const char *)err {
|
||||
#define IS(x) (err && (strcmp(err, #x) == 0))
|
||||
if
|
||||
IS(ERROR_ACCOUNT_ALREADY_ACTIVATED)
|
||||
return NSLocalizedString(@"This account is already activated.", nil);
|
||||
if
|
||||
IS(ERROR_ACCOUNT_ALREADY_IN_USE)
|
||||
return NSLocalizedString(@"This account is already in use.", nil);
|
||||
if
|
||||
IS(ERROR_ACCOUNT_DOESNT_EXIST)
|
||||
return NSLocalizedString(@"This account does not exist.", nil);
|
||||
if
|
||||
IS(ERROR_ACCOUNT_NOT_ACTIVATED)
|
||||
return NSLocalizedString(@"This account is not activated yet.", nil);
|
||||
if
|
||||
IS(ERROR_ALIAS_ALREADY_IN_USE)
|
||||
return NSLocalizedString(@"This alias is already used.", nil);
|
||||
if
|
||||
IS(ERROR_ALIAS_DOESNT_EXIST)
|
||||
return NSLocalizedString(@"This alias does not exist.", nil);
|
||||
if
|
||||
IS(ERROR_EMAIL_ALREADY_IN_USE)
|
||||
return NSLocalizedString(@"This email address is already used.", nil);
|
||||
if
|
||||
IS(ERROR_EMAIL_DOESNT_EXIST)
|
||||
return NSLocalizedString(@"This email does not exist.", nil);
|
||||
if
|
||||
IS(ERROR_KEY_DOESNT_MATCH)
|
||||
return NSLocalizedString(@"The confirmation code is invalid.", nil);
|
||||
if
|
||||
IS(ERROR_PASSWORD_DOESNT_MATCH)
|
||||
return NSLocalizedString(@"Passwords do not match.", nil);
|
||||
if
|
||||
IS(ERROR_PHONE_ISNT_E164)
|
||||
return NSLocalizedString(@"Your phone number is invalid.", nil);
|
||||
|
||||
if (!linphone_core_is_network_reachable(LC))
|
||||
return NSLocalizedString(@"There is no network connection available, enable "
|
||||
@"WIFI or WWAN prior to configure an account",
|
||||
nil);
|
||||
|
||||
if (err)
|
||||
LOGW(@"Unhandled error %s", err);
|
||||
return NSLocalizedString(@"Unknown error, please try again later", nil);
|
||||
}
|
||||
|
||||
- (void)showErrorPopup:(const char *)err {
|
||||
UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account configuration issue", nil)
|
||||
message:[self stringForError:err]
|
||||
delegate:nil
|
||||
cancelButtonTitle:NSLocalizedString(@"Cancel", nil)
|
||||
otherButtonTitles:nil, nil];
|
||||
[errorView show];
|
||||
}
|
||||
|
||||
#pragma mark - cbs
|
||||
|
||||
void assistant_link_phone_number_with_account(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status,
|
||||
const char *resp) {
|
||||
AssistantLinkView *thiz = (__bridge AssistantLinkView *)(linphone_account_creator_get_user_data(creator));
|
||||
thiz.waitView.hidden = YES;
|
||||
if (status == LinphoneAccountCreatorOK) {
|
||||
thiz.linkAccountView.hidden = thiz.activateSMSView.userInteractionEnabled = YES;
|
||||
thiz.activateSMSView.hidden = thiz.linkAccountView.userInteractionEnabled = NO;
|
||||
} else {
|
||||
[thiz showErrorPopup:resp];
|
||||
}
|
||||
}
|
||||
|
||||
void assistant_activate_phone_number_link(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status,
|
||||
const char *resp) {
|
||||
AssistantLinkView *thiz = (__bridge AssistantLinkView *)(linphone_account_creator_get_user_data(creator));
|
||||
thiz.waitView.hidden = YES;
|
||||
if (status == LinphoneAccountCreatorOK) {
|
||||
[PhoneMainView.instance popToView:DialerView.compositeViewDescription];
|
||||
} else {
|
||||
[thiz showErrorPopup:resp];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - other
|
||||
- (void)updateCountry:(BOOL)force {
|
||||
NSDictionary *c = [CountryListView countryWithCountryCode:_countryCodeField.text];
|
||||
if (c || force) {
|
||||
[_countryButton setTitle:c ? [c objectForKey:@"name"] : NSLocalizedString(@"Unknown country code", nil)
|
||||
forState:UIControlStateNormal];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)onCountryCodeFieldChange:(id)sender {
|
||||
[self updateCountry:NO];
|
||||
}
|
||||
|
||||
- (IBAction)onCountryCodeFieldEnd:(id)sender {
|
||||
[self updateCountry:YES];
|
||||
}
|
||||
|
||||
- (IBAction)onCountryClick:(id)sender {
|
||||
CountryListView *view = VIEW(CountryListView);
|
||||
[view setDelegate:(id)self];
|
||||
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription];
|
||||
}
|
||||
|
||||
- (IBAction)onLinkAccount:(id)sender {
|
||||
_waitView.hidden = NO;
|
||||
linphone_account_creator_set_phone_number(account_creator, _phoneField.text.UTF8String,
|
||||
_countryCodeField.text.UTF8String);
|
||||
linphone_account_creator_link_phone_number_with_account(account_creator);
|
||||
}
|
||||
|
||||
- (IBAction)onCheckValidationButton:(id)sender {
|
||||
_waitView.hidden = NO;
|
||||
linphone_account_creator_set_activation_code(account_creator, _activationCodeField.text.UTF8String);
|
||||
linphone_account_creator_activate_phone_number_link(account_creator);
|
||||
}
|
||||
|
||||
- (IBAction)onDialerClick:(id)sender {
|
||||
[PhoneMainView.instance popToView:DialerView.compositeViewDescription];
|
||||
}
|
||||
|
||||
#pragma mark - select country delegate
|
||||
|
||||
- (void)didSelectCountry:(NSDictionary *)country {
|
||||
[_countryButton setTitle:[country objectForKey:@"name"] forState:UIControlStateNormal];
|
||||
_countryCodeField.text = [country objectForKey:@"code"];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -24,6 +24,7 @@
|
|||
#import "PhoneMainView.h"
|
||||
|
||||
@interface AssistantView : UIViewController <UITextFieldDelegate, UICompositeViewDelegate> {
|
||||
|
||||
@private
|
||||
LinphoneAccountCreator *account_creator;
|
||||
UIView *currentView;
|
||||
|
|
@ -35,6 +36,8 @@
|
|||
long phone_number_length;
|
||||
}
|
||||
|
||||
@property(nonatomic) UICompositeViewDescription *outgoingView;
|
||||
|
||||
@property(nonatomic, strong) IBOutlet TPKeyboardAvoidingScrollView *contentView;
|
||||
@property(nonatomic, strong) IBOutlet UIView *waitView;
|
||||
@property(nonatomic, strong) IBOutlet UIButton *backButton;
|
||||
|
|
@ -43,7 +46,6 @@
|
|||
@property(nonatomic, strong) IBOutlet UIView *createAccountView;
|
||||
@property(nonatomic, strong) IBOutlet UIView *createAccountActivateEmailView;
|
||||
@property(nonatomic, strong) IBOutlet UIView *linphoneLoginView;
|
||||
@property(strong, nonatomic) IBOutlet UIView *linkAccountView;
|
||||
@property(nonatomic, strong) IBOutlet UIView *loginView;
|
||||
@property(nonatomic, strong) IBOutlet UIView *remoteProvisioningLoginView;
|
||||
@property(strong, nonatomic) IBOutlet UIView *remoteProvisioningView;
|
||||
|
|
|
|||
|
|
@ -23,11 +23,11 @@
|
|||
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
|
||||
|
||||
#import "AssistantView.h"
|
||||
#import "CountryListView.h"
|
||||
#import "LinphoneManager.h"
|
||||
#import "PhoneMainView.h"
|
||||
#import "UITextField+DoneButton.h"
|
||||
#import "UIAssistantTextField.h"
|
||||
#import "CountryListViewController.h"
|
||||
#import "UITextField+DoneButton.h"
|
||||
|
||||
#import <XMLRPCConnection.h>
|
||||
#import <XMLRPCConnectionManager.h>
|
||||
|
|
@ -115,6 +115,8 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
[self changeView:_welcomeView back:FALSE animation:FALSE];
|
||||
}
|
||||
mustRestoreView = NO;
|
||||
|
||||
_outgoingView = DialerView.compositeViewDescription;
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
|
|
@ -156,11 +158,6 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
assistant_activate_account);
|
||||
linphone_account_creator_cbs_set_is_account_activated(linphone_account_creator_get_callbacks(account_creator),
|
||||
assistant_is_account_activated);
|
||||
|
||||
linphone_account_creator_cbs_set_link_phone_number_with_account(linphone_account_creator_get_callbacks(account_creator),
|
||||
assistant_link_phone_number_with_account);
|
||||
linphone_account_creator_cbs_set_activate_phone_number_link(linphone_account_creator_get_callbacks(account_creator),
|
||||
assistant_activate_phone_number_link);
|
||||
linphone_account_creator_cbs_set_recover_phone_account(linphone_account_creator_get_callbacks(account_creator),
|
||||
assistant_recover_phone_account);
|
||||
}
|
||||
|
|
@ -364,7 +361,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
if ([self findView:ViewElement_PhoneButton inView:currentView ofType:UIButton.class]) {
|
||||
CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];
|
||||
CTCarrier *carrier = networkInfo.subscriberCellularProvider;
|
||||
NSDictionary *country = [CountryListViewController countryWithIso:carrier.isoCountryCode];
|
||||
NSDictionary *country = [CountryListView countryWithIso:carrier.isoCountryCode];
|
||||
|
||||
if (!IPAD) {
|
||||
UISwitch *emailSwitch = (UISwitch *)[self findView:ViewElement_EmailFormView inView:self.contentView ofType:UISwitch.class];
|
||||
|
|
@ -377,7 +374,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
for (NSString* lang in [NSLocale preferredLanguages]) {
|
||||
NSUInteger idx = [lang rangeOfString:@"-"].location;
|
||||
idx = (idx == NSNotFound) ? idx = 0 : idx + 1;
|
||||
if ((country = [CountryListViewController countryWithIso:[lang substringFromIndex:idx]]) != nil)
|
||||
if ((country = [CountryListView countryWithIso:[lang substringFromIndex:idx]]) != nil)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -494,9 +491,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
[createPhone showError:[AssistantView errorForStatus:LinphoneAccountCreatorPhoneNumberInvalid]
|
||||
when:^BOOL(NSString *inputEntry) {
|
||||
UIAssistantTextField* countryCodeField = [self findTextField:ViewElement_PhoneCC];
|
||||
NSString *prefix = (inputEntry.length > 0 && countryCodeField.text.length > 0)
|
||||
? [countryCodeField.text substringFromIndex:1]
|
||||
: nil;
|
||||
NSString *prefix = (inputEntry.length > 0) ? countryCodeField.text : nil;
|
||||
LinphoneAccountCreatorStatus s =
|
||||
linphone_account_creator_set_phone_number(account_creator, inputEntry.length > 0 ? inputEntry.UTF8String : NULL, prefix.UTF8String);
|
||||
if (s != LinphoneAccountCreatorOK) {
|
||||
|
|
@ -610,7 +605,10 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
switch (state) {
|
||||
case LinphoneRegistrationOk: {
|
||||
_waitView.hidden = true;
|
||||
[PhoneMainView.instance popToView:DialerView.compositeViewDescription];
|
||||
|
||||
[LinphoneManager.instance lpConfigSetInt:[NSDate new].timeIntervalSince1970
|
||||
forKey:@"must_link_account_time"];
|
||||
[PhoneMainView.instance popToView:_outgoingView];
|
||||
break;
|
||||
}
|
||||
case LinphoneRegistrationNone:
|
||||
|
|
@ -649,6 +647,8 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
switch (status) {
|
||||
case LinphoneConfiguringSuccessful:
|
||||
// we successfully loaded a remote provisioned config, go to dialer
|
||||
[LinphoneManager.instance lpConfigSetInt:[NSDate new].timeIntervalSince1970
|
||||
forKey:@"must_link_account_time"];
|
||||
if (number_of_configs_before < bctbx_list_size(linphone_core_get_proxy_config_list(LC))) {
|
||||
LOGI(@"A proxy config was set up with the remote provisioning, skip assistant");
|
||||
[self onDialerClick:nil];
|
||||
|
|
@ -734,9 +734,11 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
- (void)isAccountUsed:(LinphoneAccountCreatorStatus)status withResp:(const char *)resp {
|
||||
if (currentView == _linphoneLoginView) {
|
||||
if (status == LinphoneAccountCreatorAccountExistWithAlias) {
|
||||
_outgoingView = DialerView.compositeViewDescription;
|
||||
[self configureProxyConfig];
|
||||
} else if (status == LinphoneAccountCreatorAccountExist) {
|
||||
[self changeView:_linkAccountView back:NO animation:YES];
|
||||
_outgoingView = AssistantLinkView.compositeViewDescription;
|
||||
[self configureProxyConfig];
|
||||
} else {
|
||||
[self showErrorPopup:resp];
|
||||
}
|
||||
|
|
@ -786,7 +788,8 @@ void assistant_recover_phone_account(LinphoneAccountCreator *creator, LinphoneAc
|
|||
}
|
||||
}
|
||||
|
||||
void assistant_activate_account(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status, const char *response) {
|
||||
void assistant_activate_account(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status,
|
||||
const char *resp) {
|
||||
AssistantView *thiz = (__bridge AssistantView *)(linphone_account_creator_get_user_data(creator));
|
||||
thiz.waitView.hidden = YES;
|
||||
if (status == LinphoneAccountCreatorAccountActivated) {
|
||||
|
|
@ -816,7 +819,7 @@ void assistant_is_account_activated(LinphoneAccountCreator *creator, LinphoneAcc
|
|||
[alert addButtonWithTitle:NSLocalizedString(@"Skip verification", nil)
|
||||
block:^{
|
||||
[thiz configureProxyConfig];
|
||||
[PhoneMainView.instance popToView:DialerView.compositeViewDescription];
|
||||
[PhoneMainView.instance popToView:thiz.outgoingView];
|
||||
}];
|
||||
[alert show];
|
||||
} else {
|
||||
|
|
@ -824,28 +827,6 @@ void assistant_is_account_activated(LinphoneAccountCreator *creator, LinphoneAcc
|
|||
}
|
||||
}
|
||||
|
||||
void assistant_link_phone_number_with_account(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status,
|
||||
const char *resp) {
|
||||
AssistantView *thiz = (__bridge AssistantView *)(linphone_account_creator_get_user_data(creator));
|
||||
thiz.waitView.hidden = YES;
|
||||
if (status == LinphoneAccountCreatorOK) {
|
||||
[thiz changeView:thiz.createAccountActivateSMSView back:FALSE animation:TRUE];
|
||||
} else {
|
||||
[thiz showErrorPopup:resp];
|
||||
}
|
||||
}
|
||||
|
||||
void assistant_activate_phone_number_link(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status,
|
||||
const char *resp) {
|
||||
AssistantView *thiz = (__bridge AssistantView *)(linphone_account_creator_get_user_data(creator));
|
||||
thiz.waitView.hidden = YES;
|
||||
if (status == LinphoneAccountCreatorOK) {
|
||||
[thiz configureProxyConfig];
|
||||
} else {
|
||||
[thiz showErrorPopup:resp];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - UITextFieldDelegate Functions
|
||||
|
||||
- (void)textFieldDidBeginEditing:(UITextField *)textField {
|
||||
|
|
@ -1066,14 +1047,14 @@ void assistant_activate_phone_number_link(LinphoneAccountCreator *creator, Linph
|
|||
- (IBAction)onCountryCodeClick:(id)sender {
|
||||
mustRestoreView = YES;
|
||||
|
||||
CountryListViewController *view = VIEW(CountryListViewController);
|
||||
CountryListView *view = VIEW(CountryListView);
|
||||
[view setDelegate:(id)self];
|
||||
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription];
|
||||
}
|
||||
|
||||
- (void)updateCountry:(BOOL)force {
|
||||
UIAssistantTextField* countryCodeField = [self findTextField:ViewElement_PhoneCC];
|
||||
NSDictionary *c = [CountryListViewController countryWithCountryCode:countryCodeField.text];
|
||||
NSDictionary *c = [CountryListView countryWithCountryCode:countryCodeField.text];
|
||||
if (c || force) {
|
||||
UIButton *phoneButton =
|
||||
(UIButton *)[self findView:ViewElement_PhoneButton inView:currentView ofType:UIButton.class];
|
||||
|
|
|
|||
242
Classes/Base.lproj/AssistantLinkView.xib
Normal file
242
Classes/Base.lproj/AssistantLinkView.xib
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AssistantLinkView">
|
||||
<connections>
|
||||
<outlet property="activateSMSView" destination="2Nl-QG-fTA" id="kfz-Eh-D1e"/>
|
||||
<outlet property="activationCodeField" destination="PXL-cl-haZ" id="faz-N0-sjR"/>
|
||||
<outlet property="checkValidationButton" destination="bIM-bh-Huy" id="yr2-9j-ejj"/>
|
||||
<outlet property="countryButton" destination="rLT-uU-cJS" id="lNp-Qo-AKx"/>
|
||||
<outlet property="countryCodeField" destination="DBr-NA-Ibx" id="cRz-xe-r5D"/>
|
||||
<outlet property="linkAccountButton" destination="D25-6f-qRg" id="aid-PS-8mU"/>
|
||||
<outlet property="linkAccountView" destination="ImD-Y4-3nC" id="8yc-Dr-cZ8"/>
|
||||
<outlet property="phoneField" destination="cEN-WO-5qv" id="Ftl-EA-afz"/>
|
||||
<outlet property="view" destination="FBm-gC-sIQ" id="Bhr-VA-MJs"/>
|
||||
<outlet property="waitView" destination="J3A-Fb-Dpg" id="zbb-YB-ace"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="fhP-nP-aaU" userLabel="iphone6MetricsView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view tag="1" contentMode="scaleToFill" id="FBm-gC-sIQ">
|
||||
<rect key="frame" x="0.0" y="66" width="375" height="601"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view tag="2" contentMode="scaleToFill" id="c7I-Cv-d4R" userLabel="topBar">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" tag="3" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="color_F.png" id="q79-qx-kgb" userLabel="backgroundColor">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="VlN-Em-1V6" userLabel="dialerBackButton" customClass="UIIconButton">
|
||||
<rect key="frame" x="299" y="0.0" width="76" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Add contact"/>
|
||||
<inset key="titleEdgeInsets" minX="0.0" minY="18" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" image="dialer_back_default.png">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="disabled" image="dialer_back_disabled.png"/>
|
||||
<state key="highlighted" backgroundImage="color_E.png"/>
|
||||
<connections>
|
||||
<action selector="onDialerClick:" destination="-1" eventType="touchUpInside" id="WUU-Oh-Ofu"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" tag="5" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ASSISTANT" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="zrj-TX-1RP" userLabel="titleLabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="27"/>
|
||||
<color key="textColor" red="1" green="0.36862745099999999" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="ImD-Y4-3nC" userLabel="linkAccountView">
|
||||
<rect key="frame" x="0.0" y="66" width="375" height="535"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="LINK YOUR ACCOUNT" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="0xQ-6c-cAc" userLabel="titleLabel">
|
||||
<rect key="frame" x="38" y="0.0" width="299" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="light" pointSize="24"/>
|
||||
<color key="textColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Please enter your phone number below" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="RQz-tT-5vp" userLabel="subtitleLabel">
|
||||
<rect key="frame" x="38" y="66" width="299" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.4266758859" green="0.42666310070000002" blue="0.42667034269999998" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" tag="122" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PHONE NUMBER" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="v2Q-jf-BdL" userLabel="phoneLabel">
|
||||
<rect key="frame" x="38" y="131" width="171" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.4266758859" green="0.42666310070000002" blue="0.42667034269999998" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" tag="150" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="rLT-uU-cJS" userLabel="countryButton">
|
||||
<rect key="frame" x="38" y="153" width="299" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.85415387149999999" green="0.85412830110000004" blue="0.85414278509999997" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<state key="normal" title="Select your country">
|
||||
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="highlighted" title="Choose your country" backgroundImage="color_F.png"/>
|
||||
<connections>
|
||||
<action selector="onCountryClick:" destination="-1" eventType="touchUpInside" id="AUl-nx-xOA"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField opaque="NO" clipsSubviews="YES" tag="109" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="+1" textAlignment="center" minimumFontSize="5" id="DBr-NA-Ibx" userLabel="countryCodeField">
|
||||
<rect key="frame" x="38" y="190" width="54" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.85415387149999999" green="0.85412830110000004" blue="0.85414278509999997" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" keyboardType="phonePad"/>
|
||||
<connections>
|
||||
<action selector="onCountryCodeFieldChange:" destination="-1" eventType="editingChanged" id="cot-au-ukn"/>
|
||||
<action selector="onCountryCodeFieldEnd:" destination="-1" eventType="editingDidEnd" id="5v7-YR-eTh"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField opaque="NO" clipsSubviews="YES" tag="107" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" adjustsFontSizeToFit="NO" minimumFontSize="10" id="cEN-WO-5qv" userLabel="phoneField">
|
||||
<rect key="frame" x="95" y="190" width="242" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.85415387149999999" green="0.85412830110000004" blue="0.85414278509999997" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Username"/>
|
||||
<color key="textColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="phonePad" returnKeyType="next"/>
|
||||
</textField>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoDark" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="9cd-3u-fU5" userLabel="infoButton">
|
||||
<rect key="frame" x="315" y="127" width="22" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</button>
|
||||
<button opaque="NO" tag="130" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" id="D25-6f-qRg" userLabel="linkAccountButton" customClass="UIRoundBorderedButton">
|
||||
<rect key="frame" x="38" y="238" width="299" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Create account">
|
||||
<bool key="isElement" value="YES"/>
|
||||
</accessibility>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<state key="normal" title="LINK ACCOUNT">
|
||||
<color key="titleColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="disabled">
|
||||
<color key="titleColor" red="0.71885228160000003" green="0.71883076430000004" blue="0.71884298319999995" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="highlighted" backgroundImage="color_F.png"/>
|
||||
<connections>
|
||||
<action selector="onLinkAccount:" destination="-1" eventType="touchUpInside" id="wd4-6V-tMa"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" contentMode="scaleToFill" id="2Nl-QG-fTA" userLabel="activateSMSView">
|
||||
<rect key="frame" x="0.0" y="66" width="375" height="535"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="LINK YOUR ACCOUNT" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="5aj-17-dC2" userLabel="titleLabel">
|
||||
<rect key="frame" x="36" y="0.0" width="303" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="light" pointSize="24"/>
|
||||
<color key="textColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="2/2" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" minimumFontSize="10" id="bU8-Tu-9O4" userLabel="subtitleLabel">
|
||||
<rect key="frame" x="36" y="66" width="303" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.4266758859" green="0.42666310070000002" blue="0.42667034269999998" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="ACTIVATE YOUR ACCOUNT" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="CJI-8t-QIh" userLabel="activateLabel">
|
||||
<rect key="frame" x="36" y="131" width="303" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="We sent you a SMS, please check your messages and enter the 4 digits code below:" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="8" baselineAdjustment="alignBaselines" minimumFontSize="10" id="Dvq-wa-3k8" userLabel="activateDescLabel">
|
||||
<rect key="frame" x="36" y="192" width="303" height="96"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" tag="108" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Activation code" textAlignment="center" minimumFontSize="17" clearButtonMode="always" id="PXL-cl-haZ" userLabel="activationCodeField">
|
||||
<rect key="frame" x="38" y="265" width="299" height="59"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="26"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="numberPad" returnKeyType="done"/>
|
||||
</textField>
|
||||
<button opaque="NO" tag="130" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" id="bIM-bh-Huy" userLabel="checkValidationButton" customClass="UIRoundBorderedButton">
|
||||
<rect key="frame" x="36" y="332" width="299" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Finish configuration">
|
||||
<bool key="isElement" value="YES"/>
|
||||
</accessibility>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<state key="normal" title="FINISH CONFIGURATION">
|
||||
<color key="titleColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="disabled">
|
||||
<color key="titleColor" red="0.71885228160000003" green="0.71883076430000004" blue="0.71884298319999995" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="highlighted" backgroundImage="color_F.png"/>
|
||||
<connections>
|
||||
<action selector="onCheckValidationButton:" destination="-1" eventType="touchUpInside" id="v0K-hd-CHi"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" tag="8" contentMode="scaleToFill" id="J3A-Fb-Dpg" userLabel="waitView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="601"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<activityIndicatorView opaque="NO" tag="9" contentMode="scaleToFill" animating="YES" style="gray" id="mQl-pi-5rq" userLabel="activityIndicatorView">
|
||||
<rect key="frame" x="179" y="290" width="20" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
</activityIndicatorView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="0.5" colorSpace="calibratedWhite"/>
|
||||
<gestureRecognizers/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/>
|
||||
<point key="canvasLocation" x="235.5" y="318.5"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="color_E.png" width="2" height="2"/>
|
||||
<image name="color_F.png" width="2" height="2"/>
|
||||
<image name="dialer_back_default.png" width="27" height="27"/>
|
||||
<image name="dialer_back_disabled.png" width="27" height="27"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11198.2" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="NO">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<development version="7000" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
<capability name="Alignment constraints to the first baseline" minToolsVersion="6.0"/>
|
||||
<capability name="Alignment constraints with different attributes" minToolsVersion="5.1"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
|
|
@ -19,7 +19,6 @@
|
|||
<outlet property="gotoLinphoneLoginButton" destination="38" id="K1E-r5-WiL"/>
|
||||
<outlet property="gotoLoginButton" destination="39" id="uSY-cr-j4w"/>
|
||||
<outlet property="gotoRemoteProvisioningButton" destination="Kbn-dL-C5h" id="zLh-uO-x8P"/>
|
||||
<outlet property="linkAccountView" destination="qEJ-0Q-7RE" id="1J4-k8-htL"/>
|
||||
<outlet property="linphoneLoginView" destination="52" id="9NX-6W-50g"/>
|
||||
<outlet property="loginView" destination="56" id="bJH-N8-uPi"/>
|
||||
<outlet property="remoteProvisioningLoginView" destination="xVK-hL-6pe" id="pKL-9M-Vsa"/>
|
||||
|
|
@ -1036,151 +1035,6 @@ Once it is done, come back here and click on the button.</string>
|
|||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<point key="canvasLocation" x="1055.5" y="234.5"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="qEJ-0Q-7RE" userLabel="linkAccountView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="278"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="LINK YOUR ACCOUNT" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="CDa-cM-blS" userLabel="titleLabel">
|
||||
<rect key="frame" x="38" y="0.0" width="299" height="59"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="59" id="3lg-Y7-UnM"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="light" pointSize="24"/>
|
||||
<color key="textColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Please enter your phone number below" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="Qqd-iE-DFU" userLabel="subtitleLabel">
|
||||
<rect key="frame" x="38" y="66" width="299" height="29"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Account setup assistant"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="29" id="SrE-TI-OC0"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.4266758859" green="0.42666310070000002" blue="0.42667034269999998" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<size key="shadowOffset" width="-1" height="-1"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" tag="122" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PHONE NUMBER" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z6j-bs-jVX" userLabel="phoneLabel">
|
||||
<rect key="frame" x="38" y="131" width="171" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="oKp-Av-n1K"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.4266758859" green="0.42666310070000002" blue="0.42667034269999998" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" tag="150" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="W5L-cn-o6e" userLabel="countryButton">
|
||||
<rect key="frame" x="38" y="153" width="299" height="30"/>
|
||||
<color key="backgroundColor" red="0.85415387149999999" green="0.85412830110000004" blue="0.85414278509999997" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="30" id="lWE-3z-ajx"/>
|
||||
</constraints>
|
||||
<state key="normal" title="Select your country">
|
||||
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="highlighted" title="Choose your country" backgroundImage="color_F.png"/>
|
||||
<connections>
|
||||
<action selector="onCountryCodeClick:" destination="-1" eventType="touchUpInside" id="Rop-Os-amE"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField opaque="NO" clipsSubviews="YES" tag="109" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="+1" textAlignment="center" minimumFontSize="5" translatesAutoresizingMaskIntoConstraints="NO" id="hbK-lu-zPO" userLabel="countryCodeField" customClass="UIAssistantTextField">
|
||||
<rect key="frame" x="38" y="190" width="54" height="30"/>
|
||||
<color key="backgroundColor" red="0.85415387149999999" green="0.85412830110000004" blue="0.85414278509999997" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="54" id="XHb-7K-yrU"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" keyboardType="phonePad"/>
|
||||
<connections>
|
||||
<action selector="onCountryCodeFieldChange:" destination="-1" eventType="editingChanged" id="HMd-dC-IzC"/>
|
||||
<action selector="onCountryCodeFieldEnd:" destination="-1" eventType="editingDidEnd" id="H13-GK-0cW"/>
|
||||
<outlet property="nextFieldResponder" destination="HyT-pf-iCK" id="WS5-hw-BM2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField opaque="NO" clipsSubviews="YES" tag="107" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" adjustsFontSizeToFit="NO" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="HyT-pf-iCK" userLabel="phoneField" customClass="UIAssistantTextField">
|
||||
<rect key="frame" x="95" y="190" width="242" height="30"/>
|
||||
<color key="backgroundColor" red="0.85415387149999999" green="0.85412830110000004" blue="0.85414278509999997" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Username"/>
|
||||
<color key="textColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="phonePad" returnKeyType="next"/>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-1" id="aVN-U0-DLW"/>
|
||||
<outlet property="errorLabel" destination="R0r-KO-jmx" id="F8j-vr-zo7"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" tag="410" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Invalid phone number" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="R0r-KO-jmx" userLabel="phoneErrorLabel">
|
||||
<rect key="frame" x="38" y="220" width="200" height="10"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="10" id="g0D-Yz-jAi"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="9"/>
|
||||
<color key="textColor" red="0.9859483242" green="0.0" blue="0.026950567960000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoDark" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2Mn-ag-IgW" userLabel="infoButton">
|
||||
<rect key="frame" x="315" y="127" width="22" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="22" id="Swy-CX-yml"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<action selector="onPhoneNumberDisclosureClick:" destination="-1" eventType="touchUpInside" id="4Vf-a9-Cbl"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="130" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MIU-HP-fe6" userLabel="createAccountButton" customClass="UIRoundBorderedButton">
|
||||
<rect key="frame" x="38" y="238" width="299" height="40"/>
|
||||
<accessibility key="accessibilityConfiguration" label="Create account">
|
||||
<bool key="isElement" value="YES"/>
|
||||
</accessibility>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<state key="normal" title="LINK ACCOUNT">
|
||||
<color key="titleColor" red="0.20521381499999999" green="0.20520767570000001" blue="0.2052111626" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="disabled">
|
||||
<color key="titleColor" red="0.71885228160000003" green="0.71883076430000004" blue="0.71884298319999995" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="highlighted" backgroundImage="color_F.png"/>
|
||||
<connections>
|
||||
<action selector="onLinkAccountClick:" destination="-1" eventType="touchUpInside" id="abT-AE-d1k"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="CDa-cM-blS" firstAttribute="trailing" secondItem="Qqd-iE-DFU" secondAttribute="trailing" id="3SL-iM-Yp9"/>
|
||||
<constraint firstItem="CDa-cM-blS" firstAttribute="top" secondItem="qEJ-0Q-7RE" secondAttribute="top" id="9tI-Ld-fS1"/>
|
||||
<constraint firstItem="Z6j-bs-jVX" firstAttribute="centerY" secondItem="2Mn-ag-IgW" secondAttribute="centerY" id="HZV-vb-3lP"/>
|
||||
<constraint firstItem="R0r-KO-jmx" firstAttribute="top" secondItem="HyT-pf-iCK" secondAttribute="bottom" id="JFQ-WB-jUr"/>
|
||||
<constraint firstItem="hbK-lu-zPO" firstAttribute="top" secondItem="W5L-cn-o6e" secondAttribute="bottom" constant="7" id="OMJ-cU-xl3"/>
|
||||
<constraint firstItem="Qqd-iE-DFU" firstAttribute="leading" secondItem="Z6j-bs-jVX" secondAttribute="leading" id="PAU-h7-gGF"/>
|
||||
<constraint firstItem="R0r-KO-jmx" firstAttribute="leading" secondItem="MIU-HP-fe6" secondAttribute="leading" id="UeD-vO-92R"/>
|
||||
<constraint firstAttribute="bottom" secondItem="MIU-HP-fe6" secondAttribute="bottom" id="WN4-82-KBg"/>
|
||||
<constraint firstItem="CDa-cM-blS" firstAttribute="centerX" secondItem="qEJ-0Q-7RE" secondAttribute="centerX" id="WdZ-WA-VOR"/>
|
||||
<constraint firstItem="Z6j-bs-jVX" firstAttribute="leading" secondItem="W5L-cn-o6e" secondAttribute="leading" id="bVA-xf-nVy"/>
|
||||
<constraint firstItem="HyT-pf-iCK" firstAttribute="trailing" secondItem="R0r-KO-jmx" secondAttribute="trailing" constant="99.5" id="ehk-Wp-bqO"/>
|
||||
<constraint firstItem="CDa-cM-blS" firstAttribute="leading" secondItem="qEJ-0Q-7RE" secondAttribute="leading" constant="38" id="fUv-Aj-1Hl"/>
|
||||
<constraint firstItem="2Mn-ag-IgW" firstAttribute="top" secondItem="Qqd-iE-DFU" secondAttribute="bottom" constant="32" id="geD-S5-h5h"/>
|
||||
<constraint firstItem="CDa-cM-blS" firstAttribute="leading" secondItem="Qqd-iE-DFU" secondAttribute="leading" id="huu-WP-MNV"/>
|
||||
<constraint firstItem="HyT-pf-iCK" firstAttribute="trailing" secondItem="MIU-HP-fe6" secondAttribute="trailing" id="kXf-yH-2p8"/>
|
||||
<constraint firstItem="hbK-lu-zPO" firstAttribute="bottom" secondItem="HyT-pf-iCK" secondAttribute="bottom" id="m4O-bD-0Ez"/>
|
||||
<constraint firstItem="2Mn-ag-IgW" firstAttribute="leading" secondItem="Z6j-bs-jVX" secondAttribute="trailing" constant="106.5" id="mIZ-5e-5ns"/>
|
||||
<constraint firstItem="Qqd-iE-DFU" firstAttribute="centerX" secondItem="W5L-cn-o6e" secondAttribute="centerX" id="pfp-rp-Aiw"/>
|
||||
<constraint firstItem="W5L-cn-o6e" firstAttribute="trailing" secondItem="HyT-pf-iCK" secondAttribute="trailing" id="qab-e3-iaW"/>
|
||||
<constraint firstItem="2Mn-ag-IgW" firstAttribute="trailing" secondItem="W5L-cn-o6e" secondAttribute="trailing" id="rKj-21-FNt"/>
|
||||
<constraint firstItem="MIU-HP-fe6" firstAttribute="top" secondItem="R0r-KO-jmx" secondAttribute="bottom" constant="8" symbolic="YES" id="rnu-Pp-jmt"/>
|
||||
<constraint firstItem="W5L-cn-o6e" firstAttribute="leading" secondItem="hbK-lu-zPO" secondAttribute="leading" id="tx4-Hp-BLr"/>
|
||||
<constraint firstItem="Qqd-iE-DFU" firstAttribute="top" secondItem="CDa-cM-blS" secondAttribute="bottom" constant="7" id="u1b-5C-8YH"/>
|
||||
<constraint firstItem="hbK-lu-zPO" firstAttribute="top" secondItem="HyT-pf-iCK" secondAttribute="top" id="wcU-NP-wIx"/>
|
||||
<constraint firstItem="W5L-cn-o6e" firstAttribute="top" secondItem="Z6j-bs-jVX" secondAttribute="bottom" constant="8" symbolic="YES" id="x2a-fo-YBm"/>
|
||||
<constraint firstItem="HyT-pf-iCK" firstAttribute="leading" secondItem="hbK-lu-zPO" secondAttribute="trailing" constant="3" id="xJ2-3F-mzN"/>
|
||||
<constraint firstItem="hbK-lu-zPO" firstAttribute="leading" secondItem="R0r-KO-jmx" secondAttribute="leading" id="z2d-Dl-f3b"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<point key="canvasLocation" x="1055.5" y="676"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="56" userLabel="loginView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="374" height="576"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CountryListViewController">
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CountryListView">
|
||||
<connections>
|
||||
<outlet property="searchDisplayController" destination="Fzt-cO-ZZd" id="yWw-yG-tfg"/>
|
||||
<outlet property="tableView" destination="UcW-gD-iwL" id="878-PR-Gn9"/>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// CountryListViewController.h
|
||||
// CountryListView.h
|
||||
// Country List
|
||||
//
|
||||
// Created by Pradyumna Doddala on 18/12/13.
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
- (void)didSelectCountry:(NSDictionary *)country;
|
||||
@end
|
||||
|
||||
@interface CountryListViewController : UIViewController<UICompositeViewDelegate>
|
||||
@interface CountryListView : UIViewController<UICompositeViewDelegate>
|
||||
|
||||
@property (nonatomic, weak) id<CountryListViewDelegate>delegate;
|
||||
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
//
|
||||
// CountryListViewController.m
|
||||
// CountryListView.m
|
||||
// Country List
|
||||
//
|
||||
// Created by Pradyumna Doddala on 18/12/13.
|
||||
// Copyright (c) 2013 Pradyumna Doddala. All rights reserved.
|
||||
//
|
||||
|
||||
#import "CountryListViewController.h"
|
||||
#import "CountryListView.h"
|
||||
|
||||
#import "linphone/linphonecore_utils.h"
|
||||
|
||||
@interface CountryListViewController ()
|
||||
@interface CountryListView ()
|
||||
|
||||
@property (strong, nonatomic) IBOutlet UITableView *tableView;
|
||||
@property (strong, nonatomic) NSArray *searchResults;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CountryListViewController
|
||||
@implementation CountryListView
|
||||
|
||||
static NSMutableArray * dataRows = nil;
|
||||
|
||||
|
|
@ -1446,6 +1446,8 @@ static LinphoneCoreVTable linphonec_vtable = {
|
|||
|
||||
[self enableProxyPublish:YES];
|
||||
|
||||
[self shouldPresentLinkPopup];
|
||||
|
||||
LOGI(@"Linphone [%s] started on [%s]", linphone_core_get_version(), [[UIDevice currentDevice].model UTF8String]);
|
||||
|
||||
// Post event
|
||||
|
|
@ -1502,6 +1504,61 @@ static BOOL libStarted = FALSE;
|
|||
}
|
||||
}
|
||||
|
||||
void popup_link_account_cb(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status, const char *resp) {
|
||||
if (status == LinphoneAccountCreatorAccountExistWithAlias) {
|
||||
[LinphoneManager.instance lpConfigSetInt:0 forKey:@"must_link_account_time"];
|
||||
} else {
|
||||
LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC);
|
||||
if (cfg) {
|
||||
DTAlertView *alert = [[DTAlertView alloc]
|
||||
initWithTitle:NSLocalizedString(@"Link your account", nil)
|
||||
message:[NSString
|
||||
stringWithFormat:NSLocalizedString(
|
||||
@"Link your Linphone.org account %s to your phone number.",
|
||||
nil),
|
||||
linphone_address_get_username(
|
||||
linphone_proxy_config_get_identity_address(cfg))]
|
||||
delegate:nil
|
||||
cancelButtonTitle:nil
|
||||
otherButtonTitles:NSLocalizedString(@"Maybe later", nil), nil];
|
||||
[alert addButtonWithTitle:NSLocalizedString(@"Let's go", nil)
|
||||
block:^(void) {
|
||||
[PhoneMainView.instance changeCurrentView:AssistantLinkView.compositeViewDescription];
|
||||
}];
|
||||
[alert show];
|
||||
|
||||
[LinphoneManager.instance
|
||||
lpConfigSetInt:[[NSDate date] dateByAddingTimeInterval:[LinphoneManager.instance
|
||||
lpConfigIntForKey:@"link_account_popup_time"
|
||||
withDefault:84200]]
|
||||
.timeIntervalSince1970
|
||||
forKey:@"must_link_account_time"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)shouldPresentLinkPopup {
|
||||
LOGW(@"hello!");
|
||||
NSDate *nextTime =
|
||||
[NSDate dateWithTimeIntervalSince1970:[self lpConfigIntForKey:@"must_link_account_time" withDefault:1]];
|
||||
NSDate *now = [NSDate date];
|
||||
if (nextTime.timeIntervalSince1970 > 0 && [now earlierDate:nextTime] == nextTime) {
|
||||
LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC);
|
||||
if (cfg) {
|
||||
const char *username = linphone_address_get_username(linphone_proxy_config_get_identity_address(cfg));
|
||||
LinphoneAccountCreator *account_creator = linphone_account_creator_new(
|
||||
LC,
|
||||
[LinphoneManager.instance lpConfigStringForKey:@"xmlrpc_url" inSection:@"assistant" withDefault:@""]
|
||||
.UTF8String);
|
||||
linphone_account_creator_set_user_data(account_creator, (__bridge void *)(self));
|
||||
linphone_account_creator_cbs_set_is_account_used(linphone_account_creator_get_callbacks(account_creator),
|
||||
popup_link_account_cb);
|
||||
linphone_account_creator_set_username(account_creator, username);
|
||||
linphone_account_creator_is_account_used(account_creator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)createLinphoneCore {
|
||||
|
||||
if (theLinphoneCore != nil) {
|
||||
|
|
|
|||
|
|
@ -24,26 +24,28 @@
|
|||
#import "TabBarView.h"
|
||||
|
||||
#import "AboutView.h"
|
||||
#import "ChatConversationView.h"
|
||||
#import "AssistantLinkView.h"
|
||||
#import "AssistantView.h"
|
||||
#import "CallIncomingView.h"
|
||||
#import "CallOutgoingView.h"
|
||||
#import "CallSideMenuView.h"
|
||||
#import "CallView.h"
|
||||
#import "ChatConversationCreateView.h"
|
||||
#import "ChatConversationView.h"
|
||||
#import "ChatsListView.h"
|
||||
#import "ContactDetailsView.h"
|
||||
#import "ContactsListView.h"
|
||||
#import "CountryListView.h"
|
||||
#import "DTActionSheet.h"
|
||||
#import "DTAlertView.h"
|
||||
#import "DialerView.h"
|
||||
#import "FirstLoginView.h"
|
||||
#import "HistoryDetailsView.h"
|
||||
#import "HistoryListView.h"
|
||||
#import "ImageView.h"
|
||||
#import "CallView.h"
|
||||
#import "CallIncomingView.h"
|
||||
#import "CallOutgoingView.h"
|
||||
#import "FirstLoginView.h"
|
||||
#import "SettingsView.h"
|
||||
#import "SideMenuView.h"
|
||||
#import "AssistantView.h"
|
||||
#import "CallSideMenuView.h"
|
||||
#import "UIConfirmationDialog.h"
|
||||
#import "DTAlertView.h"
|
||||
#import "DTActionSheet.h"
|
||||
#import "Utils.h"
|
||||
|
||||
#define DYNAMIC_CAST(x, cls) \
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
[app]
|
||||
#time in second between each link account popup
|
||||
link_account_popup_time=86400
|
||||
|
||||
#Hide in the assistant the button to configure an external SIP account.
|
||||
hide_assistant_custom_account=0
|
||||
|
|
@ -43,14 +45,13 @@ expiry_time_test=180
|
|||
|
||||
[sip]
|
||||
sip_random_port=0
|
||||
#whether SIP passwords must be encrypted in configuration storage file
|
||||
store_ha1_passwd=0
|
||||
|
||||
[misc]
|
||||
#by default it is set to 30 by liblinphone
|
||||
history_max_size=-1
|
||||
|
||||
#whether SIP passwords must be encrypted in configuration storage file
|
||||
store_ha1_passwd=0
|
||||
|
||||
[sound]
|
||||
dtmf_player_amp=0.007
|
||||
echocancellation=0
|
||||
|
|
|
|||
|
|
@ -79,8 +79,8 @@
|
|||
6306440E1BECB08500134C72 /* FirstLoginView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6306440C1BECB08500134C72 /* FirstLoginView.m */; };
|
||||
6308F9C51BF0DD6600D1234B /* XMLRPCHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6308F9C41BF0DD6600D1234B /* XMLRPCHelper.m */; };
|
||||
630CF5571AF7CE1500539F7A /* UITextField+DoneButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 630CF5561AF7CE1500539F7A /* UITextField+DoneButton.m */; };
|
||||
631098491D4660580041F2B3 /* CountryListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 631098481D4660580041F2B3 /* CountryListViewController.m */; };
|
||||
631098521D4660630041F2B3 /* CountryListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 631098501D4660630041F2B3 /* CountryListViewController.xib */; };
|
||||
631098491D4660580041F2B3 /* CountryListView.m in Sources */ = {isa = PBXBuildFile; fileRef = 631098481D4660580041F2B3 /* CountryListView.m */; };
|
||||
631098521D4660630041F2B3 /* CountryListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 631098501D4660630041F2B3 /* CountryListView.xib */; };
|
||||
63130FB21C1ED06900371918 /* SideMenuView~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 63130FB01C1ED06900371918 /* SideMenuView~ipad.xib */; };
|
||||
631348301B6F7B6600C6BDCB /* UIRoundBorderedButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6313482F1B6F7B6600C6BDCB /* UIRoundBorderedButton.m */; };
|
||||
631348321B6FA53300C6BDCB /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 631348311B6FA53300C6BDCB /* rootca.pem */; };
|
||||
|
|
@ -91,6 +91,7 @@
|
|||
633756451B67D2B200E21BAD /* SideMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = 633756431B67D2B100E21BAD /* SideMenuView.m */; };
|
||||
633888451BFB2C49001D5E7B /* HPGrowingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 633888421BFB2C49001D5E7B /* HPGrowingTextView.m */; };
|
||||
633888461BFB2C49001D5E7B /* HPTextViewInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = 633888441BFB2C49001D5E7B /* HPTextViewInternal.m */; };
|
||||
633E41821D74259000320475 /* AssistantLinkView.m in Sources */ = {isa = PBXBuildFile; fileRef = 633E41801D74258F00320475 /* AssistantLinkView.m */; };
|
||||
633FED9C1D3CD5590014B822 /* add_field_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 633FEBE21D3CD5570014B822 /* add_field_default.png */; };
|
||||
633FED9D1D3CD5590014B822 /* add_field_default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 633FEBE31D3CD5570014B822 /* add_field_default@2x.png */; };
|
||||
633FED9E1D3CD5590014B822 /* add_field_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 633FEBE41D3CD5570014B822 /* add_field_over.png */; };
|
||||
|
|
@ -649,6 +650,7 @@
|
|||
63E27A5B1C51392A00D332AE /* libmatroska2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 63E27A471C50EA7A00D332AE /* libmatroska2.a */; };
|
||||
63E59A3F1ADE70D900646FB3 /* InAppProductsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 63E59A3E1ADE70D900646FB3 /* InAppProductsManager.m */; };
|
||||
63E802DB1C625AEF000D5509 /* (null) in Resources */ = {isa = PBXBuildFile; };
|
||||
63EC8D391D7438660066547B /* AssistantLinkView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 63EC8D3B1D7438660066547B /* AssistantLinkView.xib */; };
|
||||
63F024B91C88792D00EACF1C /* libbctoolbox-tester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 63F024B81C88792D00EACF1C /* libbctoolbox-tester.a */; };
|
||||
63F1DF441BCE618E00EDED90 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 63F1DF431BCE618E00EDED90 /* UIAddressTextField.m */; };
|
||||
63F1DF4B1BCE983200EDED90 /* CallConferenceTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 63F1DF4A1BCE983200EDED90 /* CallConferenceTableView.m */; };
|
||||
|
|
@ -992,9 +994,9 @@
|
|||
6308F9C41BF0DD6600D1234B /* XMLRPCHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMLRPCHelper.m; path = Utils/XMLRPCHelper.m; sourceTree = "<group>"; };
|
||||
630CF5551AF7CE1500539F7A /* UITextField+DoneButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITextField+DoneButton.h"; sourceTree = "<group>"; };
|
||||
630CF5561AF7CE1500539F7A /* UITextField+DoneButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITextField+DoneButton.m"; sourceTree = "<group>"; };
|
||||
631098471D4660580041F2B3 /* CountryListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CountryListViewController.h; sourceTree = "<group>"; };
|
||||
631098481D4660580041F2B3 /* CountryListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CountryListViewController.m; sourceTree = "<group>"; };
|
||||
631098511D4660630041F2B3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/CountryListViewController.xib; sourceTree = "<group>"; };
|
||||
631098471D4660580041F2B3 /* CountryListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CountryListView.h; sourceTree = "<group>"; };
|
||||
631098481D4660580041F2B3 /* CountryListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CountryListView.m; sourceTree = "<group>"; };
|
||||
631098511D4660630041F2B3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/CountryListView.xib; sourceTree = "<group>"; };
|
||||
63130FB11C1ED06900371918 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/SideMenuView~ipad.xib"; sourceTree = "<group>"; };
|
||||
6313482E1B6F7B6600C6BDCB /* UIRoundBorderedButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIRoundBorderedButton.h; sourceTree = "<group>"; };
|
||||
6313482F1B6F7B6600C6BDCB /* UIRoundBorderedButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIRoundBorderedButton.m; sourceTree = "<group>"; };
|
||||
|
|
@ -1010,6 +1012,8 @@
|
|||
633888431BFB2C49001D5E7B /* HPTextViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HPTextViewInternal.h; sourceTree = "<group>"; };
|
||||
633888441BFB2C49001D5E7B /* HPTextViewInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HPTextViewInternal.m; sourceTree = "<group>"; };
|
||||
633E388219FFB0F400936D1C /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
633E417F1D74258F00320475 /* AssistantLinkView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssistantLinkView.h; sourceTree = "<group>"; };
|
||||
633E41801D74258F00320475 /* AssistantLinkView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AssistantLinkView.m; sourceTree = "<group>"; };
|
||||
633FEBE21D3CD5570014B822 /* add_field_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_field_default.png; sourceTree = "<group>"; };
|
||||
633FEBE31D3CD5570014B822 /* add_field_default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "add_field_default@2x.png"; sourceTree = "<group>"; };
|
||||
633FEBE41D3CD5570014B822 /* add_field_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_field_over.png; sourceTree = "<group>"; };
|
||||
|
|
@ -1567,6 +1571,7 @@
|
|||
63E59A3D1ADE6ECB00646FB3 /* InAppProductsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InAppProductsManager.h; sourceTree = "<group>"; };
|
||||
63E59A3E1ADE70D900646FB3 /* InAppProductsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InAppProductsManager.m; sourceTree = "<group>"; };
|
||||
63EA4C941B50189D00922857 /* libmswebrtc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmswebrtc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmswebrtc.a"; sourceTree = "<group>"; };
|
||||
63EC8D3A1D7438660066547B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AssistantLinkView.xib; sourceTree = "<group>"; };
|
||||
63EEE4091BBA9B110087D3AF /* libxml2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libxml2.tbd; path = usr/lib/libxml2.tbd; sourceTree = SDKROOT; };
|
||||
63EEE40B1BBA9B1B0087D3AF /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
|
||||
63EEE40D1BBA9B250087D3AF /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
|
||||
|
|
@ -1945,10 +1950,10 @@
|
|||
children = (
|
||||
22E0A81D111C44E100B04932 /* AboutView.h */,
|
||||
22E0A81C111C44E100B04932 /* AboutView.m */,
|
||||
5707425F1D5A09B8004B9C84 /* ShopView.m */,
|
||||
570742601D5A09B8004B9C84 /* ShopView.h */,
|
||||
636316D31A1DEBCB0009B839 /* AboutView.xib */,
|
||||
570742561D5A0691004B9C84 /* ShopView.xib */,
|
||||
633E417F1D74258F00320475 /* AssistantLinkView.h */,
|
||||
633E41801D74258F00320475 /* AssistantLinkView.m */,
|
||||
63EC8D3B1D7438660066547B /* AssistantLinkView.xib */,
|
||||
D350F20B15A43BB100149E54 /* AssistantView.h */,
|
||||
D350F20C15A43BB100149E54 /* AssistantView.m */,
|
||||
D38187E015FE348A00C3EDCA /* AssistantView.xib */,
|
||||
|
|
@ -1995,9 +2000,9 @@
|
|||
D35497FB15875372000081D8 /* ContactsListView.h */,
|
||||
D35497FC15875372000081D8 /* ContactsListView.m */,
|
||||
D38187C015FE342800C3EDCA /* ContactsListView.xib */,
|
||||
631098471D4660580041F2B3 /* CountryListViewController.h */,
|
||||
631098481D4660580041F2B3 /* CountryListViewController.m */,
|
||||
631098501D4660630041F2B3 /* CountryListViewController.xib */,
|
||||
631098471D4660580041F2B3 /* CountryListView.h */,
|
||||
631098481D4660580041F2B3 /* CountryListView.m */,
|
||||
631098501D4660630041F2B3 /* CountryListView.xib */,
|
||||
22F2508B107141E100AC9B3F /* DialerView.h */,
|
||||
22F2508C107141E100AC9B3F /* DialerView.m */,
|
||||
D38187C415FE345B00C3EDCA /* DialerView.xib */,
|
||||
|
|
@ -2037,6 +2042,9 @@
|
|||
D35E759C159460B50066B1C1 /* SettingsView.h */,
|
||||
D35E759D159460B50066B1C1 /* SettingsView.m */,
|
||||
636316D61A1DEC650009B839 /* SettingsView.xib */,
|
||||
570742601D5A09B8004B9C84 /* ShopView.h */,
|
||||
5707425F1D5A09B8004B9C84 /* ShopView.m */,
|
||||
570742561D5A0691004B9C84 /* ShopView.xib */,
|
||||
633756371B67BAF400E21BAD /* SideMenuTableView.h */,
|
||||
633756381B67BAF400E21BAD /* SideMenuTableView.m */,
|
||||
633756421B67D2B100E21BAD /* SideMenuView.h */,
|
||||
|
|
@ -3498,7 +3506,7 @@
|
|||
633FEDC91D3CD5590014B822 /* call_missed@2x.png in Resources */,
|
||||
633FEEAE1D3CD55A0014B822 /* numpad_2_over@2x.png in Resources */,
|
||||
633FEDB51D3CD5590014B822 /* call_alt_back_disabled@2x.png in Resources */,
|
||||
631098521D4660630041F2B3 /* CountryListViewController.xib in Resources */,
|
||||
631098521D4660630041F2B3 /* CountryListView.xib in Resources */,
|
||||
633FEF271D3CD55A0014B822 /* route_bluetooth_selected@2x.png in Resources */,
|
||||
633FEE111D3CD5590014B822 /* chat_list_indicator~ipad@2x.png in Resources */,
|
||||
633FEEFC1D3CD55A0014B822 /* options_add_call_default.png in Resources */,
|
||||
|
|
@ -3590,6 +3598,7 @@
|
|||
633FEDE31D3CD5590014B822 /* call_status_incoming@2x.png in Resources */,
|
||||
633FEE821D3CD5590014B822 /* led_disconnected.png in Resources */,
|
||||
633FEDB01D3CD5590014B822 /* call_add_disabled.png in Resources */,
|
||||
63EC8D391D7438660066547B /* AssistantLinkView.xib in Resources */,
|
||||
633FEE971D3CD55A0014B822 /* micro_disabled@2x.png in Resources */,
|
||||
D38187CD15FE346700C3EDCA /* HistoryDetailsView.xib in Resources */,
|
||||
633FEEA21D3CD55A0014B822 /* numpad_0~ipad@2x.png in Resources */,
|
||||
|
|
@ -3889,7 +3898,7 @@
|
|||
D3F26BF115986B73005F9CAB /* CallIncomingView.m in Sources */,
|
||||
D31B4B21159876C0002E6C72 /* UICompositeView.m in Sources */,
|
||||
D31AAF5E159B3919002C6B02 /* CallPausedTableView.m in Sources */,
|
||||
631098491D4660580041F2B3 /* CountryListViewController.m in Sources */,
|
||||
631098491D4660580041F2B3 /* CountryListView.m in Sources */,
|
||||
D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */,
|
||||
D350F20E15A43BB100149E54 /* AssistantView.m in Sources */,
|
||||
D3F795D615A582810077328B /* ChatConversationView.m in Sources */,
|
||||
|
|
@ -3913,6 +3922,7 @@
|
|||
6306440E1BECB08500134C72 /* FirstLoginView.m in Sources */,
|
||||
D3807FC315C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */,
|
||||
D3807FC515C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */,
|
||||
633E41821D74259000320475 /* AssistantLinkView.m in Sources */,
|
||||
D3807FE815C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */,
|
||||
D3807FEA15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */,
|
||||
D3807FEC15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */,
|
||||
|
|
@ -4062,12 +4072,12 @@
|
|||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
631098501D4660630041F2B3 /* CountryListViewController.xib */ = {
|
||||
631098501D4660630041F2B3 /* CountryListView.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
631098511D4660630041F2B3 /* Base */,
|
||||
);
|
||||
name = CountryListViewController.xib;
|
||||
name = CountryListView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
63130FB01C1ED06900371918 /* SideMenuView~ipad.xib */ = {
|
||||
|
|
@ -4261,6 +4271,14 @@
|
|||
name = ChatConversationCreateView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
63EC8D3B1D7438660066547B /* AssistantLinkView.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
63EC8D3A1D7438660066547B /* Base */,
|
||||
);
|
||||
name = AssistantLinkView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
63F1DF531BCE986A00EDED90 /* UICallConferenceCell.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 9928d61e846845592cf1b0f5895511ac0b331aac
|
||||
Subproject commit 36a73fe528a890cd8715a50288fe50d2d5fbdf59
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit e4bc29cb99cf035cca84f00064f40caff333c6a5
|
||||
Subproject commit 2aa8e46934e7df2e5ac06bbdaf1e0ce4bcc913bc
|
||||
Loading…
Add table
Reference in a new issue