mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-07 05:53:06 +00:00
Merge branch 'master' into x86_64
Conflicts: submodules/build/builder-iphone-os.mk
This commit is contained in:
commit
709c5849d1
123 changed files with 711 additions and 281 deletions
5
.gitmodules
vendored
5
.gitmodules
vendored
|
|
@ -66,6 +66,7 @@
|
|||
[submodule "submodules/cunit"]
|
||||
path = submodules/cunit
|
||||
url = git://git.linphone.org/cunit.git
|
||||
ignore = dirty
|
||||
[submodule "submodules/externals/openh264"]
|
||||
path = submodules/externals/openh264
|
||||
url = https://github.com/cisco/openh264
|
||||
|
|
@ -76,3 +77,7 @@
|
|||
[submodule "submodules/mswebrtc"]
|
||||
path = submodules/mswebrtc
|
||||
url = git://git.linphone.org/mswebrtc.git
|
||||
[submodule "Classes/KIF"]
|
||||
path = Classes/KIF
|
||||
url = https://github.com/kif-framework/KIF.git
|
||||
branch = origin/v3.1.2
|
||||
|
|
|
|||
15
.travis.yml
15
.travis.yml
|
|
@ -1,5 +1,5 @@
|
|||
language: objective-c
|
||||
xcode_project: linphone.xcworkspace
|
||||
xcode_project: linphone.xcodeproj
|
||||
xcode_scheme: linphone
|
||||
|
||||
git:
|
||||
|
|
@ -8,20 +8,15 @@ git:
|
|||
env:
|
||||
global:
|
||||
- VERSION="8.1"
|
||||
- KIF_SCREENSHOTS="${TRAVIS_BUILD_DIR}/Screenshots"
|
||||
- BYPASS_TOOLCHECK=1
|
||||
|
||||
install:
|
||||
- cd submodules/build
|
||||
- make download-sdk
|
||||
- cd ../..
|
||||
- pod install
|
||||
- git submodule update --init Classes/KIF
|
||||
- git submodule update --init --recursive submodules/linphone
|
||||
- ls -la
|
||||
|
||||
script:
|
||||
- export KIF_SCREENSHOTS=$TRAVIS_BUILD_DIR/Screenshots
|
||||
- mkdir -p "$KIF_SCREENSHOTS"
|
||||
- echo $KIF_SCREENSHOTS
|
||||
- xcodebuild -scheme linphone -workspace linphone.xcworkspace -sdk iphonesimulator8.1 test
|
||||
|
||||
after_failure:
|
||||
- ls -la $KIF_SCREENSHOTS
|
||||
- xcodebuild -scheme linphone -project linphone.xcodeproj -sdk iphonesimulator8.1 test
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = fr_CA:fr-rCA,pt_BR:pt-rBR,zh_CN:zh-rCN,zh_HK:zh-rHK,zh_TW:zh-rTW,da_DK:da-rDK,sv_SE:sv-rSE,kn_IN:kn-rIN,nl_NL:nl-rNL,en_NL:en-rNL
|
||||
minimum_perc = 1
|
||||
|
||||
[linphone-ios.localizablestrings]
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -38,11 +38,11 @@
|
|||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - ViewController Functions
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
self.tableView.accessibilityIdentifier = @"ChatRoom list";
|
||||
[self loadData];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,15 @@
|
|||
#import "UIContactDetailsHeader.h"
|
||||
#import "UIContactDetailsFooter.h"
|
||||
|
||||
|
||||
typedef enum _ContactSections {
|
||||
ContactSections_None = 0,
|
||||
ContactSections_Number,
|
||||
ContactSections_Sip,
|
||||
ContactSections_Email,
|
||||
ContactSections_MAX
|
||||
} ContactSections_e;
|
||||
|
||||
@interface ContactDetailsTableViewController : UITableViewController<ContactDetailsLabelViewDelegate, UITextFieldDelegate> {
|
||||
@private
|
||||
NSMutableArray *dataCache;
|
||||
|
|
|
|||
|
|
@ -55,14 +55,6 @@
|
|||
|
||||
@implementation ContactDetailsTableViewController
|
||||
|
||||
typedef enum _ContactSections {
|
||||
ContactSections_None = 0,
|
||||
ContactSections_Number,
|
||||
ContactSections_Sip,
|
||||
ContactSections_Email,
|
||||
ContactSections_MAX
|
||||
} ContactSections_e;
|
||||
|
||||
static const ContactSections_e contactSections[ContactSections_MAX] = {ContactSections_None, ContactSections_Number, ContactSections_Sip, ContactSections_Email};
|
||||
|
||||
@synthesize footerController;
|
||||
|
|
@ -124,6 +116,8 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {ContactSe
|
|||
[super viewDidLoad];
|
||||
[headerController view]; // Force view load
|
||||
[footerController view]; // Force view load
|
||||
|
||||
self.tableView.accessibilityIdentifier = @"Contact numbers table";
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#import "UITransferButton.h"
|
||||
#import "UIDigitButton.h"
|
||||
|
||||
@interface DialerViewController : UIViewController <UITextFieldDelegate, UICompositeViewDelegate> {
|
||||
@interface DialerViewController : UIViewController <UITextFieldDelegate, UICompositeViewDelegate, MFMailComposeViewControllerDelegate> {
|
||||
}
|
||||
|
||||
- (void)setAddress:(NSString*)address;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#import "DialerViewController.h"
|
||||
#import "IncallViewController.h"
|
||||
#import "DTAlertView.h"
|
||||
#import "LinphoneManager.h"
|
||||
#import "PhoneMainView.h"
|
||||
#import "Utils.h"
|
||||
|
|
@ -276,6 +277,89 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
}
|
||||
|
||||
#pragma mark - Debug Functions
|
||||
-(void)presentMailViewWithTitle:(NSString*)subject forRecipients:(NSArray*)recipients attachLogs:(BOOL)attachLogs {
|
||||
if( [MFMailComposeViewController canSendMail] ){
|
||||
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
|
||||
if( controller ){
|
||||
controller.mailComposeDelegate = self;
|
||||
[controller setSubject:subject];
|
||||
[controller setToRecipients:recipients];
|
||||
|
||||
if( attachLogs ){
|
||||
char * filepath = linphone_core_compress_log_collection([LinphoneManager getLc]);
|
||||
if (filepath == NULL) {
|
||||
Linphone_err(@"Cannot sent logs: file is NULL");
|
||||
return;
|
||||
}
|
||||
NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
|
||||
NSString *filename = [appName stringByAppendingString:@".gz"];
|
||||
NSString *mimeType = @"text/plain";
|
||||
|
||||
if ([filename hasSuffix:@".gz"]) {
|
||||
mimeType = @"application/gzip";
|
||||
filename = [appName stringByAppendingString:@".gz"];
|
||||
} else {
|
||||
Linphone_err(@"Unknown extension type: %@, cancelling email", filename);
|
||||
return;
|
||||
}
|
||||
[controller setMessageBody:NSLocalizedString(@"Application logs", nil) isHTML:NO];
|
||||
[controller addAttachmentData:[NSData dataWithContentsOfFile:[NSString stringWithUTF8String:filepath]] mimeType:mimeType fileName:filename];
|
||||
|
||||
ms_free(filepath);
|
||||
|
||||
}
|
||||
self.modalPresentationStyle = UIModalPresentationPageSheet;
|
||||
[self.view.window.rootViewController presentViewController:controller animated:TRUE completion:^{}];
|
||||
[controller release];
|
||||
}
|
||||
|
||||
} else {
|
||||
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:subject
|
||||
message:NSLocalizedString(@"Error: no mail account configured", nil)
|
||||
delegate:nil
|
||||
cancelButtonTitle:NSLocalizedString(@"OK", nil)
|
||||
otherButtonTitles: nil];
|
||||
[alert show];
|
||||
[alert release];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)displayDebugPopup:(NSString*)address {
|
||||
LinphoneManager* mgr = [LinphoneManager instance];
|
||||
NSString* debugAddress = [mgr lpConfigStringForKey:@"debug_popup_magic" withDefault:@""];
|
||||
if( ![debugAddress isEqualToString:@""] && [address isEqualToString:debugAddress]){
|
||||
|
||||
|
||||
DTAlertView* alertView = [[DTAlertView alloc] initWithTitle:NSLocalizedString(@"Debug", nil)
|
||||
message:NSLocalizedString(@"Choose an action", nil)];
|
||||
|
||||
[alertView addCancelButtonWithTitle:NSLocalizedString(@"Cancel", nil) block:nil];
|
||||
|
||||
[alertView addButtonWithTitle:NSLocalizedString(@"Send logs", nil) block:^{
|
||||
NSString* appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
|
||||
NSString* logsAddress = [mgr lpConfigStringForKey:@"debug_popup_email" withDefault:@"linphone-ios@linphone.org"];
|
||||
[self presentMailViewWithTitle:appName forRecipients:@[logsAddress] attachLogs:true];
|
||||
}];
|
||||
|
||||
BOOL debugEnabled = [[LinphoneManager instance] lpConfigBoolForKey:@"debugenable_preference"];
|
||||
NSString* actionLog = (debugEnabled ? NSLocalizedString(@"Disable logs", nil) : NSLocalizedString(@"Enable logs", nil));
|
||||
[alertView addButtonWithTitle:actionLog block:^{
|
||||
// enable / disable
|
||||
BOOL enableDebug = ![mgr lpConfigBoolForKey:@"debugenable_preference"];
|
||||
[mgr lpConfigSetBool:enableDebug forKey:@"debugenable_preference"];
|
||||
[mgr setLogsEnabled:enableDebug];
|
||||
}];
|
||||
|
||||
[alertView show];
|
||||
[alertView release];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
- (void)callUpdate:(LinphoneCall*)call state:(LinphoneCallState)state {
|
||||
|
|
@ -339,6 +423,13 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark - MFComposeMailDelegate
|
||||
|
||||
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
|
||||
[controller dismissViewControllerAnimated:TRUE completion:^{}];
|
||||
[self.navigationController setNavigationBarHidden:TRUE animated:FALSE];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Action Functions
|
||||
|
||||
|
|
@ -359,6 +450,9 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
|
||||
- (IBAction)onAddressChange: (id)sender {
|
||||
if( [self displayDebugPopup:self.addressField.text] ){
|
||||
self.addressField.text = @"";
|
||||
}
|
||||
if([[addressField text] length] > 0) {
|
||||
[addContactButton setEnabled:TRUE];
|
||||
[eraseButton setEnabled:TRUE];
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
,linphone_proxy_config_get_domain(proxyCfg));
|
||||
linphone_core_add_auth_info([LinphoneManager getLc], auth_info);
|
||||
linphone_core_add_proxy_config([LinphoneManager getLc], proxyCfg);
|
||||
linphone_core_set_default_proxy([LinphoneManager getLc], proxyCfg);
|
||||
linphone_core_set_default_proxy_config([LinphoneManager getLc], proxyCfg);
|
||||
[self.waitView setHidden:false];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
1
Classes/KIF
Submodule
1
Classes/KIF
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 6a21291a3b6653304be63eeaca8a0edfeb01d7c6
|
||||
|
|
@ -347,8 +347,8 @@
|
|||
{
|
||||
[[LinphoneManager instance] acceptCallForCallId:[notification.userInfo objectForKey:@"callId"]];
|
||||
}
|
||||
} else if([notification.userInfo objectForKey:@"from"] != nil) {
|
||||
NSString *remoteContact = (NSString*)[notification.userInfo objectForKey:@"from"];
|
||||
} else if([notification.userInfo objectForKey:@"from_addr"] != nil) {
|
||||
NSString *remoteContact = (NSString*)[notification.userInfo objectForKey:@"from_addr"];
|
||||
// Go to ChatRoom view
|
||||
[[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]];
|
||||
LinphoneChatRoom*room = [self findChatRoomForContact:remoteContact];
|
||||
|
|
@ -428,7 +428,7 @@
|
|||
// use the standard handler
|
||||
[self application:application didReceiveLocalNotification:notification];
|
||||
} else if( [identifier isEqualToString:@"mark_read"] ){
|
||||
NSString* from = [notification.userInfo objectForKey:@"from"];
|
||||
NSString* from = [notification.userInfo objectForKey:@"from_addr"];
|
||||
LinphoneChatRoom* room = linphone_core_get_or_create_chat_room(lc, [from UTF8String]);
|
||||
if( room ){
|
||||
linphone_chat_room_mark_as_read(room);
|
||||
|
|
|
|||
|
|
@ -200,7 +200,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
|
|||
switch(menc){
|
||||
case LinphoneMediaEncryptionSRTP: val="SRTP"; break;
|
||||
case LinphoneMediaEncryptionZRTP: val="ZRTP"; break;
|
||||
default: val="None"; break;
|
||||
case LinphoneMediaEncryptionDTLS: val="DTLS"; break;
|
||||
case LinphoneMediaEncryptionNone: val="None"; break;
|
||||
}
|
||||
[self setString:val forKey:@"media_encryption_preference"];
|
||||
}
|
||||
|
|
@ -438,7 +439,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
|
|||
} else {
|
||||
// was a new proxy config, add it
|
||||
linphone_core_add_proxy_config(lc, proxyCfg);
|
||||
linphone_core_set_default_proxy(lc,proxyCfg);
|
||||
linphone_core_set_default_proxy_config(lc,proxyCfg);
|
||||
}
|
||||
|
||||
bad_proxy:
|
||||
|
|
@ -573,6 +574,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
|
|||
linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionSRTP);
|
||||
else if (menc && [menc compare:@"ZRTP"] == NSOrderedSame)
|
||||
linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionZRTP);
|
||||
else if (menc && [menc compare:@"DTLS"] == NSOrderedSame)
|
||||
linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionDTLS);
|
||||
else
|
||||
linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionNone);
|
||||
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ typedef struct _LinphoneManagerSounds {
|
|||
+ (BOOL)copyFile:(NSString*)src destination:(NSString*)dst override:(BOOL)override;
|
||||
+ (NSString*)bundleFile:(NSString*)file;
|
||||
+ (NSString*)documentFile:(NSString*)file;
|
||||
+ (NSString*)cacheDirectory;
|
||||
|
||||
- (void)acceptCall:(LinphoneCall *)call;
|
||||
- (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer;
|
||||
|
|
|
|||
|
|
@ -895,6 +895,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
|
|||
const LinphoneAddress* remoteAddress = linphone_chat_message_get_from_address(msg);
|
||||
char* c_address = linphone_address_as_string_uri_only(remoteAddress);
|
||||
NSString* address = [NSString stringWithUTF8String:c_address];
|
||||
NSString* remote_uri = [NSString stringWithUTF8String:c_address];
|
||||
const char* call_id = linphone_chat_message_get_custom_header(msg, "Call-ID");
|
||||
NSString* callID = [NSString stringWithUTF8String:call_id];
|
||||
|
||||
|
|
@ -926,7 +927,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
|
|||
notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"IM_MSG",nil), address];
|
||||
notif.alertAction = NSLocalizedString(@"Show", nil);
|
||||
notif.soundName = @"msg.caf";
|
||||
notif.userInfo = @{@"from":address, @"call-id":callID};
|
||||
notif.userInfo = @{@"from":address, @"from_addr":remote_uri, @"call-id":callID};
|
||||
|
||||
[[UIApplication sharedApplication] presentLocalNotificationNow:notif];
|
||||
}
|
||||
|
|
@ -1458,14 +1459,8 @@ static BOOL libStarted = FALSE;
|
|||
libmsbcg729_init(); // load g729 plugin
|
||||
#endif
|
||||
|
||||
/*to make sure we don't loose debug trace*/
|
||||
if ([self lpConfigBoolForKey:@"debugenable_preference"]) {
|
||||
linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler);
|
||||
ortp_set_log_level_mask(ORTP_DEBUG|ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL);
|
||||
/*must be done before creating linphone core to get its traces too*/
|
||||
}
|
||||
linphone_core_set_log_collection_path([[LinphoneManager cacheDirectory] UTF8String]);
|
||||
linphone_core_enable_log_collection([self lpConfigBoolForKey:@"debugenable_preference"]);
|
||||
[self setLogsEnabled:[self lpConfigBoolForKey:@"debugenable_preference"]];
|
||||
|
||||
|
||||
theLinphoneCore = linphone_core_new_with_config (&linphonec_vtable
|
||||
|
|
@ -1477,7 +1472,8 @@ static BOOL libStarted = FALSE;
|
|||
/* set the CA file no matter what, since the remote provisioning could be hitting an HTTPS server */
|
||||
const char* lRootCa = [[LinphoneManager bundleFile:@"rootca.pem"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
|
||||
linphone_core_set_root_ca(theLinphoneCore, lRootCa);
|
||||
|
||||
linphone_core_set_user_certificates_path(theLinphoneCore,[[LinphoneManager cacheDirectory] UTF8String]);
|
||||
|
||||
/* The core will call the linphone_iphone_configuring_status_changed callback when the remote provisioning is loaded (or skipped).
|
||||
Wait for this to finish the code configuration */
|
||||
|
||||
|
|
@ -2078,10 +2074,12 @@ static void audioRouteChangeListenerCallback (
|
|||
|
||||
-(void)setLogsEnabled:(BOOL)enabled {
|
||||
if (enabled) {
|
||||
NSLog(@"Enabling debug logs");
|
||||
linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler);
|
||||
ortp_set_log_level_mask(ORTP_DEBUG|ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL);
|
||||
linphone_core_enable_log_collection(enabled);
|
||||
} else {
|
||||
NSLog(@"Disabling debug logs");
|
||||
linphone_core_enable_log_collection(enabled);
|
||||
linphone_core_disable_logs();
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -70,7 +70,7 @@
|
|||
[self setHighlighted:false animated:true];
|
||||
}
|
||||
|
||||
- (NSString *)accessibilityValue {
|
||||
- (NSString *)accessibilityLabel {
|
||||
return [NSString stringWithFormat:@"%@ %@", firstNameLabel.text, lastNameLabel.text];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@
|
|||
[normalView setAlpha:1.0f];
|
||||
[editView setAlpha:0.0f];
|
||||
[tableView setEditing:TRUE animated:false];
|
||||
tableView.accessibilityIdentifier = @"Contact Name Table";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Classes/LinphoneUI/zh_TW.lproj/UICallBar.strings
Normal file
BIN
Classes/LinphoneUI/zh_TW.lproj/UICallBar.strings
Normal file
Binary file not shown.
BIN
Classes/LinphoneUI/zh_TW.lproj/UICallBar~ipad.strings
Normal file
BIN
Classes/LinphoneUI/zh_TW.lproj/UICallBar~ipad.strings
Normal file
Binary file not shown.
BIN
Classes/LinphoneUI/zh_TW.lproj/UICallCell.strings
Normal file
BIN
Classes/LinphoneUI/zh_TW.lproj/UICallCell.strings
Normal file
Binary file not shown.
BIN
Classes/LinphoneUI/zh_TW.lproj/UIChatCell.strings
Normal file
BIN
Classes/LinphoneUI/zh_TW.lproj/UIChatCell.strings
Normal file
Binary file not shown.
BIN
Classes/LinphoneUI/zh_TW.lproj/UIContactDetailsHeader.strings
Normal file
BIN
Classes/LinphoneUI/zh_TW.lproj/UIContactDetailsHeader.strings
Normal file
Binary file not shown.
|
|
@ -32,6 +32,8 @@
|
|||
#import "IASKTextField.h"
|
||||
#include "linphone/lpconfig.h"
|
||||
|
||||
#import "DTAlertView.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
@interface UIDevice (debug)
|
||||
|
||||
|
|
@ -562,6 +564,14 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
[values removeObject:@"SRTP"];
|
||||
[dict setObject:values forKey:@"Values"];
|
||||
}
|
||||
if(!linphone_core_media_encryption_supported([LinphoneManager getLc], LinphoneMediaEncryptionDTLS)) {
|
||||
NSMutableArray *titles = [NSMutableArray arrayWithArray:[dict objectForKey:@"Titles"]];
|
||||
[titles removeObject:@"DTLS"];
|
||||
[dict setObject:titles forKey:@"Titles"];
|
||||
NSMutableArray *values = [NSMutableArray arrayWithArray:[dict objectForKey:@"Values"]];
|
||||
[values removeObject:@"DTLS"];
|
||||
[dict setObject:values forKey:@"Values"];
|
||||
}
|
||||
return [[[IASKSpecifier alloc] initWithSpecifier:dict] autorelease];
|
||||
}
|
||||
|
||||
|
|
@ -686,6 +696,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
|
||||
- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForSpecifier:(IASKSpecifier*)specifier {
|
||||
NSString *key = [specifier.specifierDict objectForKey:kIASKKey];
|
||||
LinphoneCore* lc = [LinphoneManager getLc];
|
||||
#ifdef DEBUG
|
||||
if([key isEqual:@"release_button"]) {
|
||||
[UIApplication sharedApplication].keyWindow.rootViewController = nil;
|
||||
|
|
@ -701,9 +712,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
#endif
|
||||
if([key isEqual:@"wizard_button"]) {
|
||||
LinphoneProxyConfig* proxy = NULL;
|
||||
linphone_core_get_default_proxy([LinphoneManager getLc], &proxy);
|
||||
if (proxy == NULL ) {
|
||||
if (linphone_core_get_default_proxy_config(lc) == NULL ) {
|
||||
[self goToWizard];
|
||||
return;
|
||||
}
|
||||
|
|
@ -714,12 +723,30 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
otherButtonTitles:NSLocalizedString(@"Launch Wizard",nil), nil];
|
||||
[alert show];
|
||||
[alert release];
|
||||
} else if([key isEqual:@"about_button"]) {
|
||||
} else if ( [key isEqual:@"clear_proxy_button"] ) {
|
||||
if ( linphone_core_get_default_proxy_config(lc) == NULL ) {
|
||||
return;
|
||||
}
|
||||
|
||||
DTAlertView* alert = [[DTAlertView alloc] initWithTitle:NSLocalizedString(@"Warning", nil) message:NSLocalizedString(@"Are you sure to want to clear your proxy setup?",nil)];
|
||||
|
||||
[alert addCancelButtonWithTitle:NSLocalizedString(@"Cancel", nil) block:nil];
|
||||
[alert addButtonWithTitle:NSLocalizedString(@"Yes", nil)
|
||||
block:^{
|
||||
linphone_core_clear_proxy_config(lc);
|
||||
linphone_core_clear_all_auth_info(lc);
|
||||
[settingsStore transformLinphoneCoreToKeys];
|
||||
[settingsController.tableView reloadData];
|
||||
}];
|
||||
[alert show];
|
||||
[alert release];
|
||||
|
||||
} else if([key isEqual:@"about_button"]) {
|
||||
[[PhoneMainView instance] changeCurrentView:[AboutViewController compositeViewDescription] push:TRUE];
|
||||
} else if ([key isEqualToString:@"reset_logs_button"]) {
|
||||
linphone_core_reset_log_collection();
|
||||
} else if ([key isEqual:@"send_logs_button"]) {
|
||||
char * filepath = linphone_core_compress_log_collection([LinphoneManager getLc]);
|
||||
char * filepath = linphone_core_compress_log_collection(lc);
|
||||
if (filepath == NULL) {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Cannot sent logs: file is NULL"];
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -514,7 +514,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
linphone_proxy_config_enable_register(proxyCfg, true);
|
||||
linphone_core_add_auth_info([LinphoneManager getLc], info);
|
||||
linphone_core_add_proxy_config([LinphoneManager getLc], proxyCfg);
|
||||
linphone_core_set_default_proxy([LinphoneManager getLc], proxyCfg);
|
||||
linphone_core_set_default_proxy_config([LinphoneManager getLc], proxyCfg);
|
||||
}
|
||||
|
||||
- (NSString*)identityFromUsername:(NSString*)username {
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Classes/zh_TW.lproj/AboutViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/AboutViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/ChatRoomViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/ChatRoomViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/ChatViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/ChatViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/ContactDetailsLabelViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/ContactDetailsLabelViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/ContactDetailsViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/ContactDetailsViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/ContactsViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/ContactsViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/DialerViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/DialerViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/DialerViewController~ipad.strings
Normal file
BIN
Classes/zh_TW.lproj/DialerViewController~ipad.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/HistoryDetailsViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/HistoryDetailsViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/HistoryViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/HistoryViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/ImageViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/ImageViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/IncomingCallViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/IncomingCallViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/IncomingCallViewController~ipad.strings
Normal file
BIN
Classes/zh_TW.lproj/IncomingCallViewController~ipad.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/WizardViewController.strings
Normal file
BIN
Classes/zh_TW.lproj/WizardViewController.strings
Normal file
Binary file not shown.
BIN
Classes/zh_TW.lproj/WizardViewController~ipad.strings
Normal file
BIN
Classes/zh_TW.lproj/WizardViewController~ipad.strings
Normal file
Binary file not shown.
|
|
@ -7,6 +7,7 @@
|
|||
//
|
||||
|
||||
#import "ChatTester.h"
|
||||
#include "LinphoneManager.h"
|
||||
|
||||
@implementation ChatTester
|
||||
|
||||
|
|
@ -17,23 +18,23 @@
|
|||
[super beforeAll];
|
||||
[self switchToValidAccountIfNeeded];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Chat"];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Chat")];
|
||||
}
|
||||
|
||||
#pragma mark - tools
|
||||
|
||||
- (void)goBackFromChat {
|
||||
[tester tapViewWithAccessibilityLabel:@"Back"];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Back")];
|
||||
}
|
||||
|
||||
- (void)startChatWith:(NSString*)user {
|
||||
[tester enterText:user intoViewWithAccessibilityLabel:@"Enter a address"];
|
||||
[tester tapViewWithAccessibilityLabel:@"New Discussion"];
|
||||
[tester enterText:user intoViewWithAccessibilityLabel:LOCALIZED(@"Enter a address")];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"New Discussion")];
|
||||
}
|
||||
|
||||
- (void)sendMessage:(NSString*)message {
|
||||
[tester enterText:message intoViewWithAccessibilityLabel:@"Message field"];
|
||||
[tester tapViewWithAccessibilityLabel:@"Send"];
|
||||
[tester enterText:message intoViewWithAccessibilityLabel:LOCALIZED(@"Message field")];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Send")];
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -44,10 +45,10 @@
|
|||
|
||||
[self sendMessage:@"Hello"];
|
||||
|
||||
[tester waitForViewWithAccessibilityLabel:@"Outgoing message" value:@"Hello" traits:UIAccessibilityTraitStaticText];
|
||||
[tester waitForViewWithAccessibilityLabel:@"Incoming message" value:@"Hello" traits:UIAccessibilityTraitStaticText];
|
||||
[tester waitForViewWithAccessibilityLabel:LOCALIZED(@"Outgoing message") value:@"Hello" traits:UIAccessibilityTraitStaticText];
|
||||
[tester waitForViewWithAccessibilityLabel:LOCALIZED(@"Incoming message") value:@"Hello" traits:UIAccessibilityTraitStaticText];
|
||||
|
||||
[tester waitForViewWithAccessibilityLabel:@"Message status" value:@"delivered" traits:UIAccessibilityTraitImage];
|
||||
[tester waitForViewWithAccessibilityLabel:LOCALIZED(@"Message status") value:@"delivered" traits:UIAccessibilityTraitImage];
|
||||
|
||||
[self goBackFromChat];
|
||||
}
|
||||
|
|
@ -56,8 +57,8 @@
|
|||
|
||||
[self startChatWith:@"sip://toto"];
|
||||
|
||||
[tester waitForViewWithAccessibilityLabel:@"Invalid address" traits:UIAccessibilityTraitStaticText];
|
||||
[tester tapViewWithAccessibilityLabel:@"Cancel"];
|
||||
[tester waitForViewWithAccessibilityLabel:LOCALIZED(@"Invalid address") traits:UIAccessibilityTraitStaticText];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Cancel")];
|
||||
}
|
||||
|
||||
-(void)testSendToSIPAddress{
|
||||
|
|
@ -65,7 +66,7 @@
|
|||
|
||||
[self startChatWith:sipAddr];
|
||||
|
||||
[tester waitForViewWithAccessibilityLabel:@"Contact name" value:@"testios" traits:0];
|
||||
[tester waitForViewWithAccessibilityLabel:LOCALIZED(@"Contact name") value:@"testios" traits:0];
|
||||
|
||||
[self goBackFromChat];
|
||||
}
|
||||
|
|
@ -98,5 +99,44 @@
|
|||
[self goBackFromChat];
|
||||
}
|
||||
|
||||
- (void)testRemoveAllChats {
|
||||
NSArray* uuids = [self getUUIDArrayOfSize:5];
|
||||
|
||||
for( NSString* uuid in uuids ){
|
||||
[self startChatWith:uuid];
|
||||
[self sendMessage:@"Test"];
|
||||
[self goBackFromChat];
|
||||
}
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit" traits:UIAccessibilityTraitButton];
|
||||
|
||||
// we expect to be able to delete at least the amount of chatrooms we created
|
||||
for( int i =0; i< uuids.count; i++){
|
||||
[tester tapViewWithAccessibilityLabel:@"Delete" traits:UIAccessibilityTraitButton];
|
||||
}
|
||||
|
||||
// then we try to delete all the rest of chatrooms
|
||||
while ( [tester tryFindingTappableViewWithAccessibilityLabel:@"Delete" traits:UIAccessibilityTraitButton error:nil] )
|
||||
{
|
||||
[tester tapViewWithAccessibilityLabel:@"Delete" traits:UIAccessibilityTraitButton];
|
||||
NSLog(@"Deleting an extra chat");
|
||||
}
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit" traits:UIAccessibilityTraitButton]; // same as the first but it is "OK" on screen
|
||||
|
||||
// check that the tableview is empty
|
||||
UITableView* tv = nil;
|
||||
NSError* err = nil;
|
||||
if( [tester tryFindingAccessibilityElement:nil view:&tv withIdentifier:@"ChatRoom list" tappable:false error:&err] ){
|
||||
XCTAssert(tv != nil);
|
||||
XCTAssert([tv numberOfRowsInSection:0] == 0); // no more chat rooms
|
||||
} else {
|
||||
NSLog(@"Error: %@",err);
|
||||
}
|
||||
|
||||
// test that there's no more chatrooms in the core
|
||||
XCTAssert(linphone_core_get_chat_rooms([LinphoneManager getLc]) == nil);
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
|||
13
KifTests/ContactsTester.h
Normal file
13
KifTests/ContactsTester.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
//
|
||||
// ContactsTester.h
|
||||
// linphone
|
||||
//
|
||||
// Created by Guillaume BIENKOWSKI on 17/02/2015.
|
||||
//
|
||||
//
|
||||
|
||||
#import "LinphoneTestCase.h"
|
||||
|
||||
@interface ContactsTester : LinphoneTestCase
|
||||
|
||||
@end
|
||||
132
KifTests/ContactsTester.m
Normal file
132
KifTests/ContactsTester.m
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
//
|
||||
// ContactsTester.m
|
||||
// linphone
|
||||
//
|
||||
// Created by Guillaume BIENKOWSKI on 17/02/2015.
|
||||
//
|
||||
//
|
||||
|
||||
#import "ContactsTester.h"
|
||||
|
||||
#import "ContactDetailsTableViewController.h"
|
||||
|
||||
@implementation ContactsTester
|
||||
|
||||
#pragma mark - Setup
|
||||
|
||||
- (void)beforeAll {
|
||||
[tester tapViewWithAccessibilityLabel:@"Contacts"];
|
||||
}
|
||||
|
||||
#pragma mark - Utils
|
||||
|
||||
- (void)setText:(NSString*)text forContactHeaderIndex:(NSInteger)idx {
|
||||
[tester tapRowAtIndexPath:[NSIndexPath indexPathForRow:idx inSection:0] inTableViewWithAccessibilityIdentifier:@"Contact Name Table"];
|
||||
[tester enterTextIntoCurrentFirstResponder:text];
|
||||
}
|
||||
|
||||
- (void)setText:(NSString*)text forContactNumbersIndex:(NSInteger)idx inSection:(NSInteger)section {
|
||||
[tester tapRowAtIndexPath:[NSIndexPath indexPathForRow:idx inSection:section] inTableViewWithAccessibilityIdentifier:@"Contact numbers table"];
|
||||
[tester enterTextIntoCurrentFirstResponder:text];
|
||||
}
|
||||
|
||||
- (void)createContact:(NSString*)firstName lastName:(NSString*)lastName phoneNumber:(NSString*)phone SIPAddress:(NSString*)sip {
|
||||
|
||||
XCTAssert(firstName != nil);
|
||||
[tester tapViewWithAccessibilityLabel:@"Add contact"];
|
||||
|
||||
// check that the OK button is disabled
|
||||
[tester waitForViewWithAccessibilityLabel:@"Edit" traits:UIAccessibilityTraitButton|UIAccessibilityTraitNotEnabled|UIAccessibilityTraitSelected];
|
||||
|
||||
[self setText:firstName forContactHeaderIndex:0];
|
||||
|
||||
// entering text should enable the "edit" button
|
||||
[tester waitForViewWithAccessibilityLabel:@"Edit" traits:UIAccessibilityTraitButton|UIAccessibilityTraitSelected];
|
||||
|
||||
if( lastName )
|
||||
[self setText:lastName forContactHeaderIndex:1];
|
||||
|
||||
if ( phone ){
|
||||
[self setText:phone forContactNumbersIndex:0 inSection:ContactSections_Number];
|
||||
}
|
||||
|
||||
if ( sip ){
|
||||
[self setText:sip forContactNumbersIndex:0 inSection:ContactSections_Sip];
|
||||
}
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
[tester tapViewWithAccessibilityLabel:@"Back"];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - Tests
|
||||
|
||||
- (void)testDeleteContact {
|
||||
NSString* contactName = [self getUUID];
|
||||
[self createContact:contactName lastName:@"dummy" phoneNumber:@"0102030405" SIPAddress:@"testios"];
|
||||
|
||||
NSString* fullName = [contactName stringByAppendingString:@" dummy"];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:fullName traits:UIAccessibilityTraitStaticText];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
[tester scrollViewWithAccessibilityIdentifier:@"Contact numbers table" byFractionOfSizeHorizontal:0 vertical:-0.9];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Remove"];
|
||||
|
||||
[tester waitForAbsenceOfViewWithAccessibilityLabel:@"Firstname, Lastname" value:fullName traits:UIAccessibilityTraitStaticText];
|
||||
}
|
||||
|
||||
- (void)addNumbersToSection:(NSInteger)section numbers:(NSArray*)numbers {
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
for(NSInteger i = 0; i<numbers.count;i++){
|
||||
[self setText:[numbers objectAtIndex:i] forContactNumbersIndex:i inSection:section];
|
||||
// now tap the "+" to add a new item. This is not optimal, since it will tap the first instance with that name.
|
||||
// we should do something like "[tester tapViewWithAccessibilityLabel:@"Insert linphone" atRowIndex:i inSection:section]"
|
||||
[tester tapViewWithAccessibilityLabel:@"Insert Linphone"];
|
||||
}
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
|
||||
for(NSInteger i = 0; i<numbers.count;i++){
|
||||
[tester waitForViewWithAccessibilityLabel:[@"Linphone, " stringByAppendingString:[numbers objectAtIndex:i]]
|
||||
traits:UIAccessibilityTraitStaticText];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)testEditContact {
|
||||
NSString* contactName = [self getUUID];
|
||||
NSString* fullName = [contactName stringByAppendingString:@" dummy"];
|
||||
[self createContact:contactName lastName:@"dummy" phoneNumber:nil SIPAddress:nil];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:fullName traits:UIAccessibilityTraitStaticText];
|
||||
|
||||
/* Phone number */
|
||||
NSArray* phones = @[@"01234", @"56789"];
|
||||
NSLog(@"add phones");
|
||||
[self addNumbersToSection:ContactSections_Number numbers:phones];
|
||||
|
||||
NSArray* SIPs = @[@"sip1", @"sip2"];
|
||||
[self addNumbersToSection:ContactSections_Sip numbers:SIPs];
|
||||
|
||||
|
||||
// remove all these numbers, doesn't quite work today...
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
for(NSInteger i = 0; i< (phones.count+SIPs.count); i++){
|
||||
[tester tapViewWithAccessibilityLabel:@"Delete Linphone"];
|
||||
[tester tapViewWithAccessibilityLabel:@"Delete"];
|
||||
}
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
|
||||
// then remove the contact
|
||||
[tester tapViewWithAccessibilityLabel:@"Edit"];
|
||||
|
||||
[tester scrollViewWithAccessibilityIdentifier:@"Contact numbers table" byFractionOfSizeHorizontal:0 vertical:-0.9];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Remove"];
|
||||
|
||||
[tester waitForAbsenceOfViewWithAccessibilityLabel:fullName traits:UIAccessibilityTraitStaticText];
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
#import <KIF/KIF.h>
|
||||
|
||||
#define LOCALIZED(X) (X)
|
||||
|
||||
@interface LinphoneTestCase : KIFTestCase
|
||||
@property BOOL invalidAccountSet;
|
||||
|
||||
|
|
@ -16,5 +18,6 @@
|
|||
- (NSString*)accountDomain;
|
||||
|
||||
- (NSString*)getUUID;
|
||||
- (NSArray*)getUUIDArrayOfSize:(size_t)size;
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@
|
|||
|
||||
#import "LinphoneManager.h"
|
||||
|
||||
#import <KIFTypist.h>
|
||||
#import "KIF/KIFTypist.h"
|
||||
|
||||
@implementation LinphoneTestCase
|
||||
|
||||
+ (void)initialize {
|
||||
// default is 0.01, which sometimes confuses the simulator to the point that
|
||||
// it will miss some keys
|
||||
[KIFTypist setKeystrokeDelay:0.1];
|
||||
[KIFTypist setKeystrokeDelay:0.05];
|
||||
}
|
||||
|
||||
- (NSString *)accountUsername {
|
||||
|
|
@ -29,7 +29,15 @@
|
|||
}
|
||||
|
||||
- (NSString*)getUUID {
|
||||
return [[NSUUID UUID] UUIDString];
|
||||
return [[[NSUUID UUID] UUIDString] substringToIndex:8];
|
||||
}
|
||||
|
||||
- (NSArray *)getUUIDArrayOfSize:(size_t)size {
|
||||
NSMutableArray* array = [NSMutableArray arrayWithCapacity:size];
|
||||
for (NSInteger i=0; i<size; i++) {
|
||||
[array setObject:[self getUUID] atIndexedSubscript:i];
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
- (void)beforeAll{
|
||||
|
|
@ -83,23 +91,23 @@ static bool invalidAccount = true;
|
|||
|
||||
if( invalidAccount && ! [self hasValidProxyConfig] ){
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Settings"];
|
||||
[tester tapViewWithAccessibilityLabel:@"Run assistant"];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Settings")];
|
||||
[tester tapViewWithAccessibilityLabel:@"Run assistant"];
|
||||
[tester waitForTimeInterval:0.5];
|
||||
if( [tester tryFindingViewWithAccessibilityLabel:@"Launch Wizard" error:nil]){
|
||||
[tester tapViewWithAccessibilityLabel:@"Launch Wizard"];
|
||||
if( [tester tryFindingViewWithAccessibilityLabel:LOCALIZED(@"Launch Wizard") error:nil]){
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Launch Wizard")];
|
||||
[tester waitForTimeInterval:0.5];
|
||||
}
|
||||
|
||||
NSLog(@"Switching to a valid account");
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Start"];
|
||||
[tester tapViewWithAccessibilityLabel:@"Sign in linphone.org account"];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Start")];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Sign in linphone.org account")];
|
||||
|
||||
[tester enterText:@"testios" intoViewWithAccessibilityLabel:@"Username"];
|
||||
[tester enterText:@"testtest" intoViewWithAccessibilityLabel:@"Password"];
|
||||
[tester enterText:@"testios" intoViewWithAccessibilityLabel:LOCALIZED(@"Username")];
|
||||
[tester enterText:@"testtest" intoViewWithAccessibilityLabel:LOCALIZED(@"Password")];
|
||||
|
||||
[tester tapViewWithAccessibilityLabel:@"Sign in"];
|
||||
[tester tapViewWithAccessibilityLabel:LOCALIZED(@"Sign in")];
|
||||
|
||||
invalidAccount = false;
|
||||
}
|
||||
|
|
|
|||
19
Podfile
19
Podfile
|
|
@ -1,19 +0,0 @@
|
|||
# Uncomment this line to define a global platform for your project
|
||||
# platform :ios, '6.0'
|
||||
|
||||
target 'linphone' do
|
||||
|
||||
end
|
||||
|
||||
target 'LinphoneTester' do
|
||||
|
||||
end
|
||||
|
||||
target 'LinphoneTester Tests' do
|
||||
|
||||
end
|
||||
|
||||
target 'KifTests', :exclusive => true do
|
||||
pod 'KIF', '~> 3.0'
|
||||
end
|
||||
|
||||
39
README.md
39
README.md
|
|
@ -1,22 +1,29 @@
|
|||
# Linphone on iPhone
|
||||
|
||||
[](https://travis-ci.org/Gui13/linphone-iphone)
|
||||
[](https://travis-ci.org/BelledonneCommunications/linphone-iphone)
|
||||
|
||||
## Build prerequisite
|
||||
|
||||
Linphone for iPhone depends on liblinphone SDK. This SDK is generated from makefiles and shell scripts. Before building Linphone on iPhone, please read and execute [liblinphone README](submodule/linphone/README.macos.md).
|
||||
Linphone for iPhone depends on liblinphone SDK. This SDK is generated from makefiles and shell scripts.
|
||||
|
||||
You will NOT be able to build the SDK if you did not read liblinphone README first!
|
||||
* Xcode (download from apple or using appstore application)
|
||||
* [Java SE](http://www.oracle.com/technetwork/java/javase/downloads/index.html) or openJDK
|
||||
This is required to generate a C sourcefile from SIP grammar using [antlr3](http://www.antlr3.org/) generator.
|
||||
* [HomeBrew](http://brew.sh) or [Macports](http://www.macports.org/).
|
||||
|
||||
### Additional dependencies
|
||||
|
||||
### Install dependencies
|
||||
|
||||
* Using HomeBrew:
|
||||
|
||||
brew install imagemagick yasm nasm
|
||||
brew install autoconf automake pkg-config doxygen java nasm gettext wget yasm optipng imagemagick coreutils intltool
|
||||
# antlr3.2 is faster than default homebrew version 3.4 - you can install official antlr3 though
|
||||
brew tap Gui13/linphone
|
||||
brew install antlr3.2
|
||||
|
||||
* Using MacPorts:
|
||||
|
||||
sudo port install ImageMagick optipng yasm nasm
|
||||
sudo port install autoconf automake pkg-config doxygen antlr3 java nasm gettext wget yasm optipng ImageMagick coreutils intltool
|
||||
|
||||
### System linking
|
||||
|
||||
|
|
@ -30,13 +37,13 @@ You will NOT be able to build the SDK if you did not read liblinphone README fir
|
|||
|
||||
export PATH=$LOCAL_BIN_DIR:$PATH
|
||||
|
||||
* Install [gas-preprosessor.pl](http://github.com/yuvi/gas-preprocessor/) (version above July 2013) into your `LOCAL_BIN_DIR` directory
|
||||
* Install [gas-preprocessor.pl](http://github.com/yuvi/gas-preprocessor/) (version above July 2013) into your PATH. Suppose you use `LOCAL_BIN_DIR` directory:
|
||||
|
||||
wget --no-check-certificate https://raw.github.com/yuvi/gas-preprocessor/master/gas-preprocessor.pl
|
||||
chmod +x gas-preprocessor.pl
|
||||
sudo mv gas-preprocessor.pl $LOCAL_BIN_DIR
|
||||
|
||||
* Link `libtoolize` to `glibtoolize`
|
||||
* (HomeBrew only) Link `libtoolize` to `glibtoolize`
|
||||
|
||||
sudo ln -s $LOCAL_BIN_DIR/glibtoolize $LOCAL_BIN_DIR/libtoolize
|
||||
|
||||
|
|
@ -91,21 +98,9 @@ After the SDK is built, just open the Linphone Xcode project with Xcode, and pre
|
|||
|
||||
## TESTING THE APPLICATION
|
||||
|
||||
You need the cocoapods gem installed:
|
||||
We are using the KIF framework to test the UI of Linphone. It is used as a submodule (instead of CocoaPods) for ease.
|
||||
|
||||
sudo gem install cocoapods
|
||||
pod setup # the first time that cocoapods is installed, not needed if you have it already
|
||||
pod init
|
||||
|
||||
This will install the KIF framework, which is used for testing:
|
||||
|
||||
pod install
|
||||
|
||||
After this, you should open the xcworkspace instead of the xcodeproj
|
||||
|
||||
open linphone.xcworkspace
|
||||
|
||||
Now, simply press `Command + U` and the default simulator will launch and try to pass all the tests.
|
||||
Simply press `Command + U` and the default simulator / device will launch and try to pass all the tests.
|
||||
|
||||
|
||||
## LIMITATIONS, KNOWN BUGS
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -43,6 +43,9 @@
|
|||
/* No comment provided by engineer. */
|
||||
"Answer" = "Answer";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Are you sure to want to clear your proxy setup?" = "Are you sure to want to clear your proxy setup?";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Average" = "Average";
|
||||
|
||||
|
|
@ -250,6 +253,9 @@
|
|||
/* No comment provided by engineer. */
|
||||
"No codec" = "No codec";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"No connectivity" = "No connectivity";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"No microphone" = "No microphone";
|
||||
|
||||
|
|
@ -283,6 +289,9 @@
|
|||
/* No comment provided by engineer. */
|
||||
"Please enter a valid domain.\n" = "Please enter a valid domain.\n";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Please enter a valid username" = "Please enter a valid username";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Please enter a valid username.\n" = "Please enter a valid username.\n";
|
||||
|
||||
|
|
@ -346,6 +355,9 @@
|
|||
/* No comment provided by engineer. */
|
||||
"SIP addresses" = "SIP addresses";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stay here" = "Stay here";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Stop video" = "Stop video";
|
||||
|
||||
|
|
@ -397,6 +409,9 @@
|
|||
/* No comment provided by engineer. */
|
||||
"Yes" = "Yes";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You can either skip verification or connect to the Internet first." = "You can either skip verification or connect to the Internet first.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You missed a call from %@" = "You missed a call from %@";
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Resources/zh_TW.lproj/Localizable.strings
Normal file
BIN
Resources/zh_TW.lproj/Localizable.strings
Normal file
Binary file not shown.
|
|
@ -124,6 +124,7 @@
|
|||
<string>None</string>
|
||||
<string>SRTP</string>
|
||||
<string>ZRTP</string>
|
||||
<string>DTLS</string>
|
||||
</array>
|
||||
<key>Type</key>
|
||||
<string>PSMultiValueSpecifier</string>
|
||||
|
|
@ -132,6 +133,7 @@
|
|||
<string>None</string>
|
||||
<string>SRTP</string>
|
||||
<string>ZRTP</string>
|
||||
<string>DTLS</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue