diff --git a/Classes/ChatConversationView.h b/Classes/ChatConversationView.h
index 9e62f09c4..7a264ca8e 100644
--- a/Classes/ChatConversationView.h
+++ b/Classes/ChatConversationView.h
@@ -40,6 +40,7 @@
@property(nonatomic) LinphoneChatRoom *chatRoom;
@property(nonatomic) LinphoneChatRoomCbs *chatRoomCbs;
+@property(nonatomic) Boolean markAsRead;
@property(weak, nonatomic) IBOutlet UIIconButton *backButton;
@property(nonatomic, strong) IBOutlet ChatConversationTableView *tableController;
diff --git a/Classes/ChatConversationView.m b/Classes/ChatConversationView.m
index 7368d9e07..bf5dd6555 100644
--- a/Classes/ChatConversationView.m
+++ b/Classes/ChatConversationView.m
@@ -85,7 +85,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (void)viewDidLoad {
[super viewDidLoad];
-
+ _markAsRead = TRUE;
// if we use fragments, remove back button
if (IPAD) {
_backButton.hidden = YES;
@@ -247,8 +247,10 @@ static UICompositeViewDescription *compositeDescription = nil;
}
- (void)applicationWillEnterForeground:(NSNotification *)notif {
- if (_chatRoom)
+ if (_chatRoom && _markAsRead)
[ChatConversationView markAsRead:_chatRoom];
+
+ _markAsRead = TRUE;
}
- (void)callUpdateEvent:(NSNotification *)notif {
@@ -826,6 +828,7 @@ void on_chat_room_chat_message_sent(LinphoneChatRoom *cr, const LinphoneEventLog
ChatConversationView *view = (__bridge ChatConversationView *)linphone_chat_room_cbs_get_user_data(linphone_chat_room_get_current_callbacks(cr));
[view.tableController addEventEntry:(LinphoneEventLog *)event_log];
[view.tableController scrollToBottom:true];
+ [ChatsListTableView saveDataToUserDefaults];
if (IPAD)
[NSNotificationCenter.defaultCenter postNotificationName:kLinphoneMessageReceived object:view];
diff --git a/Classes/ChatsListTableView.h b/Classes/ChatsListTableView.h
index ed79f82f2..cfab007de 100644
--- a/Classes/ChatsListTableView.h
+++ b/Classes/ChatsListTableView.h
@@ -30,4 +30,5 @@
- (void)loadData;
- (void)markCellAsRead:(LinphoneChatRoom *)chatRoom;
++ (void)saveDataToUserDefaults;
@end
diff --git a/Classes/ChatsListTableView.m b/Classes/ChatsListTableView.m
index 49e3b98d7..4264087b9 100644
--- a/Classes/ChatsListTableView.m
+++ b/Classes/ChatsListTableView.m
@@ -123,6 +123,55 @@ static int sorted_history_comparison(LinphoneChatRoom *to_insert, LinphoneChatRo
}
}
++ (void) saveDataToUserDefaults {
+ NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.belledonne-communications.linphone.widget"];
+ MSList *sorted = nil;
+ const MSList *unsorted = linphone_core_get_chat_rooms(LC);
+ const MSList *iter = unsorted;
+
+ while (iter) {
+ // store last message in user data
+ LinphoneChatRoom *chat_room = iter->data;
+ sorted = bctbx_list_insert_sorted(sorted, chat_room, (bctbx_compare_func)sorted_history_comparison);
+ iter = iter->next;
+ }
+
+ NSMutableArray *addresses = [NSMutableArray array];
+
+ while (sorted) {
+ NSMutableDictionary *dict = [NSMutableDictionary dictionary];
+ LinphoneChatRoom *cr = sorted->data;
+ const LinphoneAddress *peer_address = linphone_chat_room_get_peer_address(cr);
+ const LinphoneAddress *local_address = linphone_chat_room_get_local_address(cr);
+ NSString *display;
+ [dict setObject:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(peer_address)]
+ forKey:@"peer"];
+ [dict setObject:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(local_address)]
+ forKey:@"local"];
+ if (linphone_chat_room_get_conference_address(cr))
+ display = [NSString stringWithUTF8String:linphone_chat_room_get_subject(cr)];
+ else {
+ display = [NSString stringWithUTF8String:linphone_address_get_display_name(peer_address)?:linphone_address_get_username(peer_address)];
+ if ([FastAddressBook imageForAddress:peer_address])
+ [dict setObject:UIImageJPEGRepresentation([UIImage resizeImage:[FastAddressBook imageForAddress:peer_address]
+ withMaxWidth:200
+ andMaxHeight:200],
+ 1)
+ forKey:@"img"];
+ }
+ [dict setObject:display
+ forKey:@"display"];
+ [dict setObject:[NSNumber numberWithBool:linphone_chat_room_get_conference_address(cr)]
+ forKey:@"nbParticipants"];
+ [addresses addObject:dict];
+ if (addresses.count >= 4) //send no more data than needed
+ break;
+ sorted = sorted->next;
+ }
+
+ [defaults setObject:addresses forKey:@"chatrooms"];
+}
+
- (void)markCellAsRead:(LinphoneChatRoom *)chatRoom {
int idx = bctbx_list_index(_data, VIEW(ChatConversationView).chatRoom);
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:idx inSection:0];
diff --git a/Classes/HistoryListTableView.h b/Classes/HistoryListTableView.h
index 1285997be..c6a49334c 100644
--- a/Classes/HistoryListTableView.h
+++ b/Classes/HistoryListTableView.h
@@ -29,4 +29,5 @@
@property(strong, nonatomic) NSMutableDictionary *sections;
@property(strong, nonatomic) NSMutableArray *sortedDays;
++ (void) saveDataToUserDefaults;
@end
diff --git a/Classes/HistoryListTableView.m b/Classes/HistoryListTableView.m
index 5617e7895..4961d6b21 100644
--- a/Classes/HistoryListTableView.m
+++ b/Classes/HistoryListTableView.m
@@ -158,7 +158,7 @@
[self computeSections];
[super loadData];
-
+
if (IPAD) {
if (![self selectFirstRow]) {
HistoryDetailsView *view = VIEW(HistoryDetailsView);
@@ -167,6 +167,64 @@
}
}
++ (void) saveDataToUserDefaults {
+ const bctbx_list_t *logs = linphone_core_get_call_logs(LC);
+ NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName: @"group.belledonne-communications.linphone.widget"];
+ NSMutableArray *logsShare = [NSMutableArray array];
+ NSMutableDictionary *tmpStoreDict = [NSMutableDictionary dictionary];
+ NSMutableArray *addedContacts = [NSMutableArray array];
+ while (logs) {
+ LinphoneCallLog *log = (LinphoneCallLog *)logs->data;
+ const LinphoneAddress *address = linphone_call_log_get_remote_address(log);
+
+ // if contact is already to be display, skip
+ if ([addedContacts containsObject:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(address)]]) {
+ logs = bctbx_list_next(logs);
+ continue;
+ }
+ // if null log id, skip
+ if (!linphone_call_log_get_call_id(log)) {
+ logs = bctbx_list_next(logs);
+ continue;
+ }
+
+ NSMutableDictionary *dict = [NSMutableDictionary dictionary];
+
+ [dict setObject:[NSString stringWithUTF8String:linphone_call_log_get_call_id(log)]
+ forKey:@"id"];
+ [dict setObject:[NSString stringWithUTF8String:linphone_address_get_display_name(address)?:linphone_address_get_username(address)]
+ forKey:@"display"];
+ UIImage *avatar = [FastAddressBook imageForAddress:address];
+ if (avatar) {
+ UIImage *image = [UIImage resizeImage:avatar
+ withMaxWidth:200
+ andMaxHeight:200];
+ NSData *imageData = UIImageJPEGRepresentation(image, 1);
+ [dict setObject:imageData
+ forKey:@"img"];
+ }
+ [tmpStoreDict setObject:dict
+ forKey:[NSDate dateWithTimeIntervalSince1970:linphone_call_log_get_start_date(log)]];
+ [addedContacts addObject:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(address)]];
+
+ logs = bctbx_list_next(logs);
+ }
+
+ NSArray *sortedDates = [[NSMutableArray alloc]
+ initWithArray:[tmpStoreDict.allKeys sortedArrayUsingComparator:^NSComparisonResult(NSDate *d1, NSDate *d2) {
+ return [d2 compare:d1];
+ }]];
+
+ // sort logs array on date
+ for (NSDate *date in sortedDates) {
+ [logsShare addObject:[tmpStoreDict objectForKey:date]];
+ if (logsShare.count >= 4) //send no more data than needed
+ break;
+ }
+
+ [mySharedDefaults setObject:logsShare forKey:@"logs"];
+}
+
- (void)computeSections {
NSArray *unsortedDays = [self.sections allKeys];
_sortedDays = [[NSMutableArray alloc]
diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
index 85ab37dea..205e23b2a 100644
--- a/Classes/LinphoneAppDelegate.m
+++ b/Classes/LinphoneAppDelegate.m
@@ -139,6 +139,8 @@
}
}
[LinphoneManager.instance.iapManager check];
+ [HistoryListTableView saveDataToUserDefaults];
+ [ChatsListTableView saveDataToUserDefaults];
}
#pragma deploymate push "ignored-api-availability"
@@ -340,16 +342,39 @@
[PhoneMainView.instance presentViewController:errView animated:YES completion:nil];
} else if([[url scheme] isEqualToString:@"message-linphone"]) {
[PhoneMainView.instance popToView:ChatsListView.compositeViewDescription];
- }else {
- if ([[url scheme] isEqualToString:@"sip"]) {
- // remove "sip://" from the URI, and do it correctly by taking resourceSpecifier and removing leading and
- // trailing "/"
- NSString *sipUri = [[url resourceSpecifier]
- stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]];
- [VIEW(DialerView) setAddress:sipUri];
- }
- }
- return YES;
+ } else if ([scheme isEqualToString:@"sip"]) {
+ // remove "sip://" from the URI, and do it correctly by taking resourceSpecifier and removing leading and
+ // trailing "/"
+ NSString *sipUri = [[url resourceSpecifier] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]];
+ [VIEW(DialerView) setAddress:sipUri];
+ } else if ([scheme isEqualToString:@"linphone-widget"]) {
+ if ([[url host] isEqualToString:@"call_log"] &&
+ [[url path] isEqualToString:@"/show"]) {
+ [VIEW(HistoryDetailsView) setCallLogId:[url query]];
+ [PhoneMainView.instance changeCurrentView:HistoryDetailsView.compositeViewDescription];
+ } else if ([[url host] isEqualToString:@"chatroom"] && [[url path] isEqualToString:@"/show"]) {
+ NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
+ resolvingAgainstBaseURL:NO];
+ NSArray *queryItems = urlComponents.queryItems;
+ NSString *peerAddress = [self valueForKey:@"peer" fromQueryItems:queryItems];
+ NSString *localAddress = [self valueForKey:@"local" fromQueryItems:queryItems];
+ LinphoneAddress *peer = linphone_address_new(peerAddress.UTF8String);
+ LinphoneAddress *local = linphone_address_new(localAddress.UTF8String);
+ LinphoneChatRoom *cr = linphone_core_find_chat_room(LC, peer, local);
+ linphone_address_unref(peer);
+ linphone_address_unref(local);
+ // TODO : Find a better fix
+ VIEW(ChatConversationView).markAsRead = FALSE;
+ [PhoneMainView.instance goToChatRoom:cr];
+ }
+ }
+ return YES;
+}
+
+- (NSString *)valueForKey:(NSString *)key fromQueryItems:(NSArray *)queryItems {
+ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name=%@", key];
+ NSURLQueryItem *queryItem = [[queryItems filteredArrayUsingPredicate:predicate] firstObject];
+ return queryItem.value;
}
- (void)fixRing {
diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
index 33deccc6d..485fde3d9 100644
--- a/Classes/LinphoneManager.m
+++ b/Classes/LinphoneManager.m
@@ -719,6 +719,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char
// Disable speaker when no more call
if ((state == LinphoneCallEnd || state == LinphoneCallError)) {
+ [HistoryListTableView saveDataToUserDefaults];
[[UIDevice currentDevice] setProximityMonitoringEnabled:FALSE];
speaker_already_enabled = FALSE;
if (linphone_core_get_calls_nb(theLinphoneCore) == 0) {
@@ -1242,6 +1243,8 @@ static void linphone_iphone_popup_password_request(LinphoneCore *lc, LinphoneAut
}
}];
}
+ [ChatsListTableView saveDataToUserDefaults];
+ [HistoryListTableView saveDataToUserDefaults];
}
static void linphone_iphone_message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *message) {
@@ -1830,7 +1833,10 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
[self enableProxyPublish:([UIApplication sharedApplication].applicationState == UIApplicationStateActive)];
- LOGI(@"Linphone [%s] started on [%s]", linphone_core_get_version(), [[UIDevice currentDevice].model UTF8String]);
+ //update UserDefaults for widgets
+ [HistoryListTableView saveDataToUserDefaults];
+
+ LOGI(@"Linphone [%s] started on [%s]", linphone_core_get_version(), [[UIDevice currentDevice].model UTF8String]);
// Post event
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"];
diff --git a/Classes/Utils/Utils.h b/Classes/Utils/Utils.h
index 97e1bacad..ced7d6937 100644
--- a/Classes/Utils/Utils.h
+++ b/Classes/Utils/Utils.h
@@ -68,6 +68,7 @@ typedef enum {
- (UIImage *)squareCrop;
- (UIImage *)scaleToSize:(CGSize)size squared:(BOOL)squared;
++ (UIImage *)resizeImage:(UIImage *)image withMaxWidth:(float)maxWidth andMaxHeight:(float)maxHeight;
@end
diff --git a/Classes/Utils/Utils.m b/Classes/Utils/Utils.m
index 1849b361f..4a1d0703c 100644
--- a/Classes/Utils/Utils.m
+++ b/Classes/Utils/Utils.m
@@ -649,6 +649,36 @@
return scaledImage;
}
++ (UIImage *)resizeImage:(UIImage *)image withMaxWidth:(float)maxWidth andMaxHeight:(float)maxHeight {
+ float actualHeight = image.size.height;
+ float actualWidth = image.size.width;
+ float imgRatio = actualWidth / actualHeight;
+ float maxRatio = maxWidth / maxHeight;
+ float compressionQuality = 1;
+ if (actualHeight > maxHeight || actualWidth > maxWidth)
+ {
+ if (imgRatio < maxRatio) {
+ imgRatio = maxHeight / actualHeight;
+ actualWidth = imgRatio * actualWidth;
+ actualHeight = maxHeight;
+ } else if (imgRatio > maxRatio) {
+ imgRatio = maxWidth / actualWidth;
+ actualHeight = imgRatio * actualHeight;
+ actualWidth = maxWidth;
+ } else {
+ actualHeight = maxHeight;
+ actualWidth = maxWidth;
+ }
+ }
+ CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight);
+ UIGraphicsBeginImageContext(rect.size);
+ [image drawInRect:rect];
+ UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
+ NSData *imageData = UIImageJPEGRepresentation(img, compressionQuality);
+ UIGraphicsEndImageContext();
+ return [UIImage imageWithData:imageData];
+}
+
@end
@implementation UIColor (LightAndDark)
diff --git a/latestCallsWidget/Base.lproj/MainInterface.storyboard b/latestCallsWidget/Base.lproj/MainInterface.storyboard
new file mode 100644
index 000000000..1e3f45eed
--- /dev/null
+++ b/latestCallsWidget/Base.lproj/MainInterface.storyboard
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/latestCallsWidget/Info.plist b/latestCallsWidget/Info.plist
new file mode 100644
index 000000000..e1db1a68f
--- /dev/null
+++ b/latestCallsWidget/Info.plist
@@ -0,0 +1,31 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Linphone - Latest Calls
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ XPC!
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ NSExtension
+
+ NSExtensionMainStoryboard
+ MainInterface
+ NSExtensionPointIdentifier
+ com.apple.widget-extension
+
+
+
diff --git a/latestCallsWidget/TodayViewController.h b/latestCallsWidget/TodayViewController.h
new file mode 100644
index 000000000..4326afe14
--- /dev/null
+++ b/latestCallsWidget/TodayViewController.h
@@ -0,0 +1,20 @@
+//
+// TodayViewController.h
+// latestCallsWidget
+//
+// Created by David Idmansour on 06/06/2018.
+//
+
+#import
+
+@interface TodayViewController : UIViewController
+@property (strong, nonatomic) IBOutletCollection(UIStackView) NSArray *stackViews;
+@property (strong, nonatomic) NSMutableArray *imgs;
+@property (strong, nonatomic) NSMutableArray *logIds;
+@property (strong, nonatomic) NSMutableArray *displayNames;
+
+- (IBAction)firstButtonTapped;
+- (IBAction)secondButtonTapped;
+- (IBAction)thirdButtonTapped;
+- (IBAction)fourthButtonTapped;
+@end
diff --git a/latestCallsWidget/TodayViewController.m b/latestCallsWidget/TodayViewController.m
new file mode 100644
index 000000000..7b5400081
--- /dev/null
+++ b/latestCallsWidget/TodayViewController.m
@@ -0,0 +1,109 @@
+//
+// TodayViewController.m
+// latestCallsWidget
+//
+// Created by David Idmansour on 06/06/2018.
+//
+
+#import "TodayViewController.h"
+#import
+
+@interface TodayViewController ()
+
+@end
+
+@implementation TodayViewController
+
+- (void)loadData {
+ NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName: @"group.belledonne-communications.linphone.widget"];
+ [_imgs removeAllObjects];
+ [_logIds removeAllObjects];
+ [_displayNames removeAllObjects];
+ NSMutableArray *logs = [NSMutableArray arrayWithArray:[mySharedDefaults objectForKey:@"logs"]];
+ for (NSDictionary *dict in logs) {
+ [_logIds addObject:[dict objectForKey:@"id"]];
+ [_displayNames addObject:[dict objectForKey:@"display"]];
+ [_imgs addObject:[dict objectForKey:@"img"]?:[NSNull null]];
+ }
+}
+
+- (void)draw {
+ int i = 0;
+ for (i = 0 ; i < 4 && i < _logIds.count ; i++) {
+ UIStackView *stack = _stackViews[i];
+ UIButton *button = stack.subviews[0];
+ UILabel *name = stack.subviews[1];
+ if (_imgs[i] != [NSNull null]) {
+ [button setImage:[UIImage imageWithData:_imgs[i]] forState:UIControlStateNormal];
+ }
+ [stack setAlpha:1];
+ button.enabled = YES;
+ [name setText:_displayNames[i]];
+ }
+
+ while (i < 4) {
+ UIStackView *stack = _stackViews[i];
+ UIButton *button = stack.subviews[0];
+ [stack setAlpha:0];
+ button.enabled = NO;
+ i++;
+ }
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ // Do any additional setup after loading the view from its nib.
+ for (UIStackView *stack in _stackViews) {
+ UIButton *button = stack.subviews[0];
+ // making rounded image
+ UIImageView *imageView = button.imageView;
+ imageView.layer.cornerRadius = imageView.frame.size.height / 2;
+ imageView.clipsToBounds = YES;
+ }
+ _logIds = [NSMutableArray array];
+ _imgs = [NSMutableArray array];
+ _displayNames = [NSMutableArray array];
+}
+
+- (void)didReceiveMemoryWarning {
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+ [_imgs removeAllObjects];
+}
+
+- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
+ // Perform any setup necessary in order to update the view.
+
+ // If an error is encountered, use NCUpdateResultFailed
+ // If there's no update required, use NCUpdateResultNoData
+ // If there's an update, use NCUpdateResultNewData
+ [self loadData];
+ [self draw];
+ completionHandler(NCUpdateResultNewData);
+}
+
+- (void)launchAppWithURL:(NSURL *) url {
+ [self.extensionContext openURL:url
+ completionHandler:nil];
+}
+
+- (void)launchOnHistoryDetailsWithId:(NSString *)logId {
+ [self launchAppWithURL:[NSURL URLWithString:[@"linphone-widget://call_log/show?" stringByAppendingString:logId]]];
+}
+
+- (IBAction)firstButtonTapped {
+ [self launchOnHistoryDetailsWithId:_logIds[0]];
+}
+
+- (IBAction)secondButtonTapped {
+ [self launchOnHistoryDetailsWithId:_logIds[1]];
+}
+
+- (IBAction)thirdButtonTapped {
+ [self launchOnHistoryDetailsWithId:_logIds[2]];
+}
+
+- (IBAction)fourthButtonTapped {
+ [self launchOnHistoryDetailsWithId:_logIds[3]];
+}
+@end
diff --git a/latestCallsWidget/latestCallsWidget.entitlements b/latestCallsWidget/latestCallsWidget.entitlements
new file mode 100644
index 000000000..eae1fdc31
--- /dev/null
+++ b/latestCallsWidget/latestCallsWidget.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.belledonne-communications.linphone.widget
+
+
+
diff --git a/latestChatroomsWidget/Base.lproj/MainInterface.storyboard b/latestChatroomsWidget/Base.lproj/MainInterface.storyboard
new file mode 100644
index 000000000..33db1d1a6
--- /dev/null
+++ b/latestChatroomsWidget/Base.lproj/MainInterface.storyboard
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/latestChatroomsWidget/Info.plist b/latestChatroomsWidget/Info.plist
new file mode 100644
index 000000000..43f038dd9
--- /dev/null
+++ b/latestChatroomsWidget/Info.plist
@@ -0,0 +1,31 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Linphone - Latest Chatrooms
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ XPC!
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ NSExtension
+
+ NSExtensionMainStoryboard
+ MainInterface
+ NSExtensionPointIdentifier
+ com.apple.widget-extension
+
+
+
diff --git a/latestChatroomsWidget/TodayViewController.h b/latestChatroomsWidget/TodayViewController.h
new file mode 100644
index 000000000..7ce90f598
--- /dev/null
+++ b/latestChatroomsWidget/TodayViewController.h
@@ -0,0 +1,22 @@
+//
+// TodayViewController.h
+// latestChatroomsWidget
+//
+// Created by David Idmansour on 18/06/2018.
+//
+
+#import
+
+@interface TodayViewController : UIViewController
+@property (strong, nonatomic) IBOutletCollection(UIStackView) NSArray *stackViews;
+@property (strong, nonatomic) NSMutableArray *addresses;
+@property (strong, nonatomic) NSMutableArray *localAddress;
+@property (strong, nonatomic) NSMutableArray *displayNames;
+@property (strong, nonatomic) NSMutableArray *isConf;
+@property (strong, nonatomic) NSMutableArray *imgs;
+
+- (IBAction)firstButtonTapped;
+- (IBAction)secondButtonTapped;
+- (IBAction)thirdButtonTapped;
+- (IBAction)fourthButtonTapped;
+@end
diff --git a/latestChatroomsWidget/TodayViewController.m b/latestChatroomsWidget/TodayViewController.m
new file mode 100644
index 000000000..4686acab0
--- /dev/null
+++ b/latestChatroomsWidget/TodayViewController.m
@@ -0,0 +1,119 @@
+//
+// TodayViewController.m
+// latestChatroomsWidget
+//
+// Created by David Idmansour on 18/06/2018.
+//
+
+#import "TodayViewController.h"
+#import
+
+@interface TodayViewController ()
+
+@end
+
+@implementation TodayViewController
+
+- (void)loadData {
+ NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName: @"group.belledonne-communications.linphone.widget"];
+ [_imgs removeAllObjects];
+ [_addresses removeAllObjects];
+ [_localAddress removeAllObjects];
+ [_displayNames removeAllObjects];
+ [_isConf removeAllObjects];
+ NSMutableArray *chatrooms = [NSMutableArray arrayWithArray:[mySharedDefaults objectForKey:@"chatrooms"]];
+ for (NSDictionary *dict in chatrooms) {
+ [_addresses addObject:[dict objectForKey:@"peer"]];
+ [_localAddress addObject:[dict objectForKey:@"local"]];
+ [_displayNames addObject:[dict objectForKey:@"display"]];
+ [_isConf addObject:(NSNumber *)[dict objectForKey:@"nbParticipants"]];
+ [_imgs addObject:[dict objectForKey:@"img"]?:[NSNull null]];
+ }
+}
+
+- (void)draw {
+ int i = 0;
+ for (i = 0 ; i < 4 && i < _addresses.count ; i++) {
+ UIStackView *stack = _stackViews[i];
+ UIButton *button = stack.subviews[0];
+ UILabel *name = stack.subviews[1];
+ if (_imgs[i] != [NSNull null]) {
+ [button setImage:[UIImage imageWithData:_imgs[i]] forState:UIControlStateNormal];
+ } else if (((NSNumber *)_isConf[i]).boolValue) {
+ [button setImage:[UIImage imageNamed:@"chat_group_avatar.png"] forState:UIControlStateNormal];
+ }
+ [stack setAlpha:1];
+ button.enabled = YES;
+ [name setText:_displayNames[i]];
+ }
+
+ while (i < 4) {
+ UIStackView *stack = _stackViews[i];
+ UIButton *button = stack.subviews[0];
+ [stack setAlpha:0];
+ button.enabled = NO;
+ i++;
+ }
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ // Do any additional setup after loading the view from its nib.
+ for (UIStackView *stack in _stackViews) {
+ UIButton *button = stack.subviews[0];
+ // making rounded image
+ UIImageView *imageView = button.imageView;
+ imageView.layer.cornerRadius = imageView.frame.size.height / 2;
+ imageView.clipsToBounds = YES;
+ }
+
+ _addresses = [NSMutableArray array];
+ _localAddress = [NSMutableArray array];
+ _displayNames = [NSMutableArray array];
+ _imgs = [NSMutableArray array];
+ _isConf = [NSMutableArray array];
+}
+
+- (void)didReceiveMemoryWarning {
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+ [_imgs removeAllObjects];
+}
+
+- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
+ // Perform any setup necessary in order to update the view.
+
+ // If an error is encountered, use NCUpdateResultFailed
+ // If there's no update required, use NCUpdateResultNoData
+ // If there's an update, use NCUpdateResultNewData
+ [self loadData];
+ [self draw];
+
+ completionHandler(NCUpdateResultNewData);
+}
+
+- (void)launchAppWithURL:(NSURL *) url {
+ [self.extensionContext openURL:url
+ completionHandler:nil];
+}
+
+- (void)launchOnChatConversationViewWithPeerAddress:(NSString *)peerAddress andLocalAddress:(NSString *)localAddress {
+ [self launchAppWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"linphone-widget://chatroom/show?peer=%@&local=%@", peerAddress, localAddress]]];
+}
+
+- (IBAction)firstButtonTapped {
+ [self launchOnChatConversationViewWithPeerAddress:_addresses[0] andLocalAddress:_localAddress[0]];
+}
+
+- (IBAction)secondButtonTapped {
+ [self launchOnChatConversationViewWithPeerAddress:_addresses[1] andLocalAddress:_localAddress[1]];
+}
+
+- (IBAction)thirdButtonTapped {
+ [self launchOnChatConversationViewWithPeerAddress:_addresses[2] andLocalAddress:_localAddress[2]];
+}
+
+- (IBAction)fourthButtonTapped {
+ [self launchOnChatConversationViewWithPeerAddress:_addresses[3] andLocalAddress:_localAddress[3]];
+}
+@end
diff --git a/latestChatroomsWidget/latestChatroomsWidget.entitlements b/latestChatroomsWidget/latestChatroomsWidget.entitlements
new file mode 100644
index 000000000..eae1fdc31
--- /dev/null
+++ b/latestChatroomsWidget/latestChatroomsWidget.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.belledonne-communications.linphone.widget
+
+
+
diff --git a/linphone-Info.plist b/linphone-Info.plist
index 59258204f..6be28d3be 100644
--- a/linphone-Info.plist
+++ b/linphone-Info.plist
@@ -63,6 +63,18 @@
message-linphone
+
+ CFBundleTypeRole
+ Viewer
+ CFBundleURLIconFile
+ linphone_icon_72@2x
+ CFBundleURLName
+ org.linphone.phone
+ CFBundleURLSchemes
+
+ linphone-widget
+
+
CFBundleVersion
0
diff --git a/linphone.entitlements b/linphone.entitlements
index b579b2b0d..371282fab 100644
--- a/linphone.entitlements
+++ b/linphone.entitlements
@@ -6,6 +6,7 @@
development
com.apple.security.application-groups
+ group.belledonne-communications.linphone.widget
group.belledonne-communications.linphone
diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
index 4ba735881..6130a12db 100755
--- a/linphone.xcodeproj/project.pbxproj
+++ b/linphone.xcodeproj/project.pbxproj
@@ -66,6 +66,18 @@
61AE365220C00B370089D9D3 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 61AE365020C00B370089D9D3 /* MainInterface.storyboard */; };
61AE365620C00B370089D9D3 /* linphoneExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 61AE364B20C00B370089D9D3 /* linphoneExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
61F1997520C6B1D5006B069A /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61F1996E20C6B1D5006B069A /* AVKit.framework */; };
+ 5E10ED4820D00630002BF6FE /* avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 633FEBE61D3CD5570014B822 /* avatar.png */; };
+ 5E10ED4920D006C9002BF6FE /* chat_group_avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 8C2A81941F87B8000012A66B /* chat_group_avatar.png */; };
+ 5E31290120D7A37E00CF3AAE /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EF0C33820C806A5005081B0 /* NotificationCenter.framework */; };
+ 5E31290520D7A37E00CF3AAE /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E31290420D7A37E00CF3AAE /* TodayViewController.m */; };
+ 5E31290820D7A37E00CF3AAE /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5E31290620D7A37E00CF3AAE /* MainInterface.storyboard */; };
+ 5E31290C20D7A37E00CF3AAE /* latestChatroomsWidget.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 5E31290020D7A37E00CF3AAE /* latestChatroomsWidget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 5E31291320D7AAA100CF3AAE /* avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 633FEBE61D3CD5570014B822 /* avatar.png */; };
+ 5E31291A20D7AAAD00CF3AAE /* chat_group_avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 8C2A81941F87B8000012A66B /* chat_group_avatar.png */; };
+ 5EEE8F9B20C80C23006E4176 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EF0C33820C806A5005081B0 /* NotificationCenter.framework */; };
+ 5EEE8F9F20C80C23006E4176 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EEE8F9E20C80C23006E4176 /* TodayViewController.m */; };
+ 5EEE8FA220C80C23006E4176 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5EEE8FA020C80C23006E4176 /* MainInterface.storyboard */; };
+ 5EEE8FA620C80C23006E4176 /* latestCallsWidget.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 5EEE8F9A20C80C23006E4176 /* latestCallsWidget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
630589E71B4E810900EFAE36 /* ChatTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 630589DF1B4E810900EFAE36 /* ChatTester.m */; };
630589E81B4E810900EFAE36 /* ContactsTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 630589E11B4E810900EFAE36 /* ContactsTester.m */; };
630589EA1B4E810900EFAE36 /* LinphoneTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 630589E41B4E810900EFAE36 /* LinphoneTestCase.m */; };
@@ -822,6 +834,20 @@
remoteGlobalIDString = 61AE364A20C00B370089D9D3;
remoteInfo = linphoneExtension;
};
+ 5E31290A20D7A37E00CF3AAE /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5E3128FF20D7A37E00CF3AAE;
+ remoteInfo = latestChatroomsWidget;
+ };
+ 5EEE8FA420C80C23006E4176 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5EEE8F9920C80C23006E4176;
+ remoteInfo = latestCallsWidget;
+ };
630589FC1B4E816A00EFAE36 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 630589F21B4E816900EFAE36 /* KIF.xcodeproj */;
@@ -888,13 +914,15 @@
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
- 61AE366220C00B370089D9D3 /* Embed App Extensions */ = {
+ 5EF0C35020C806A5005081B0 /* Embed App Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
61AE365620C00B370089D9D3 /* linphoneExtension.appex in Embed App Extensions */,
+ 5E31290C20D7A37E00CF3AAE /* latestChatroomsWidget.appex in Embed App Extensions */,
+ 5EEE8FA620C80C23006E4176 /* latestCallsWidget.appex in Embed App Extensions */,
);
name = "Embed App Extensions";
runOnlyForDeploymentPostprocessing = 0;
@@ -1043,6 +1071,19 @@
61AE365320C00B370089D9D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
61AE366320C00C810089D9D3 /* linphoneExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = linphoneExtension.entitlements; sourceTree = ""; };
61F1996E20C6B1D5006B069A /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; };
+ 5E30780420D8F00D00256DAE /* latestChatroomsWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = latestChatroomsWidget.entitlements; sourceTree = ""; };
+ 5E31290020D7A37E00CF3AAE /* latestChatroomsWidget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = latestChatroomsWidget.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5E31290320D7A37E00CF3AAE /* TodayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = ""; };
+ 5E31290420D7A37E00CF3AAE /* TodayViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = ""; };
+ 5E31290720D7A37E00CF3AAE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; };
+ 5E31290920D7A37E00CF3AAE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 5EEE8F9A20C80C23006E4176 /* latestCallsWidget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = latestCallsWidget.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5EEE8F9D20C80C23006E4176 /* TodayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = ""; };
+ 5EEE8F9E20C80C23006E4176 /* TodayViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = ""; };
+ 5EEE8FA120C80C23006E4176 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; };
+ 5EEE8FA320C80C23006E4176 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 5EEE8FB320C81334006E4176 /* latestCallsWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = latestCallsWidget.entitlements; sourceTree = ""; };
+ 5EF0C33820C806A5005081B0 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; };
630589DE1B4E810900EFAE36 /* ChatTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatTester.h; sourceTree = ""; };
630589DF1B4E810900EFAE36 /* ChatTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatTester.m; sourceTree = ""; };
630589E01B4E810900EFAE36 /* ContactsTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTester.h; sourceTree = ""; };
@@ -2016,6 +2057,22 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 5E3128FD20D7A37E00CF3AAE /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5E31290120D7A37E00CF3AAE /* NotificationCenter.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5EEE8F9720C80C23006E4176 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5EEE8F9B20C80C23006E4176 /* NotificationCenter.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
F08F118119C09C6A007D70C2 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -2214,6 +2271,8 @@
F08F118419C09C6A007D70C2 /* liblinphoneTesterTests.xctest */,
F0F952001A6AEB1000254160 /* linphoneTests.xctest */,
61AE364B20C00B370089D9D3 /* linphoneExtension.appex */,
+ 5EEE8F9A20C80C23006E4176 /* latestCallsWidget.appex */,
+ 5E31290020D7A37E00CF3AAE /* latestChatroomsWidget.appex */,
);
name = Products;
sourceTree = "";
@@ -2329,6 +2388,8 @@
8C23BCB71D82AAC3005F19BB /* linphone.entitlements */,
080E96DDFE201D6D7F000001 /* Classes */,
61AE364C20C00B370089D9D3 /* linphoneExtension */,
+ 5EEE8F9C20C80C23006E4176 /* latestCallsWidget */,
+ 5E31290220D7A37E00CF3AAE /* latestChatroomsWidget */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
F0938158188E629800A55DFA /* iTunesArtwork */,
63058A0C1B4E821E00EFAE36 /* LiblinphoneTester */,
@@ -2419,6 +2480,7 @@
F0181B6B18BF7B1200A9A357 /* SenTestingKit.framework */,
2264B6D111200342002C2C53 /* SystemConfiguration.framework */,
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
+ 5EF0C33820C806A5005081B0 /* NotificationCenter.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -2435,6 +2497,30 @@
path = linphoneExtension;
sourceTree = "";
};
+ 5E31290220D7A37E00CF3AAE /* latestChatroomsWidget */ = {
+ isa = PBXGroup;
+ children = (
+ 5E30780420D8F00D00256DAE /* latestChatroomsWidget.entitlements */,
+ 5E31290320D7A37E00CF3AAE /* TodayViewController.h */,
+ 5E31290420D7A37E00CF3AAE /* TodayViewController.m */,
+ 5E31290620D7A37E00CF3AAE /* MainInterface.storyboard */,
+ 5E31290920D7A37E00CF3AAE /* Info.plist */,
+ );
+ path = latestChatroomsWidget;
+ sourceTree = "";
+ };
+ 5EEE8F9C20C80C23006E4176 /* latestCallsWidget */ = {
+ isa = PBXGroup;
+ children = (
+ 5EEE8FB320C81334006E4176 /* latestCallsWidget.entitlements */,
+ 5EEE8F9D20C80C23006E4176 /* TodayViewController.h */,
+ 5EEE8F9E20C80C23006E4176 /* TodayViewController.m */,
+ 5EEE8FA020C80C23006E4176 /* MainInterface.storyboard */,
+ 5EEE8FA320C80C23006E4176 /* Info.plist */,
+ );
+ path = latestCallsWidget;
+ sourceTree = "";
+ };
630589DD1B4E810900EFAE36 /* TestsLinphone */ = {
isa = PBXGroup;
children = (
@@ -2762,8 +2848,8 @@
633FECA61D3CD5570014B822 /* edit_list_disabled.png */,
633FECA71D3CD5570014B822 /* edit_list_disabled@2x.png */,
633FECA81D3CD5570014B822 /* footer_chat_default.png */,
- 633FECA91D3CD5570014B822 /* footer_chat_default@2x.png */,
633FECAA1D3CD5570014B822 /* footer_chat_disabled.png */,
+ 633FECA91D3CD5570014B822 /* footer_chat_default@2x.png */,
633FECAB1D3CD5570014B822 /* footer_chat_disabled@2x.png */,
633FECAC1D3CD5570014B822 /* footer_contacts_default.png */,
633FECAD1D3CD5570014B822 /* footer_contacts_default@2x.png */,
@@ -3220,12 +3306,14 @@
1D60588F0D05DD3D006BFB54 /* Frameworks */,
8CDC89061EAF89A8006B5652 /* Embed Frameworks */,
8CB438A61EE6A65D0006F944 /* ShellScript */,
- 61AE366220C00B370089D9D3 /* Embed App Extensions */,
+ 5EF0C35020C806A5005081B0 /* Embed App Extensions */,
);
buildRules = (
);
dependencies = (
61AE365520C00B370089D9D3 /* PBXTargetDependency */,
+ 5EEE8FA520C80C23006E4176 /* PBXTargetDependency */,
+ 5E31290B20D7A37E00CF3AAE /* PBXTargetDependency */,
);
name = linphone;
productName = linphone;
@@ -3239,14 +3327,48 @@
61AE364720C00B370089D9D3 /* Sources */,
61AE364820C00B370089D9D3 /* Frameworks */,
61AE364920C00B370089D9D3 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = linphoneExtension;
+ productName = linphoneExtension;
+ productReference = 61AE364B20C00B370089D9D3 /* linphoneExtension.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+ 5E3128FF20D7A37E00CF3AAE /* latestChatroomsWidget */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5E31290D20D7A37E00CF3AAE /* Build configuration list for PBXNativeTarget "latestChatroomsWidget" */;
+ buildPhases = (
+ 5E3128FC20D7A37E00CF3AAE /* Sources */,
+ 5E3128FD20D7A37E00CF3AAE /* Frameworks */,
+ 5E3128FE20D7A37E00CF3AAE /* Resources */,
);
buildRules = (
);
dependencies = (
);
- name = linphoneExtension;
- productName = linphoneExtension;
- productReference = 61AE364B20C00B370089D9D3 /* linphoneExtension.appex */;
+ name = latestChatroomsWidget;
+ productName = latestChatroomsWidget;
+ productReference = 5E31290020D7A37E00CF3AAE /* latestChatroomsWidget.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
+ 5EEE8F9920C80C23006E4176 /* latestCallsWidget */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5EEE8FA720C80C24006E4176 /* Build configuration list for PBXNativeTarget "latestCallsWidget" */;
+ buildPhases = (
+ 5EEE8F9620C80C23006E4176 /* Sources */,
+ 5EEE8F9720C80C23006E4176 /* Frameworks */,
+ 5EEE8F9820C80C23006E4176 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = latestCallsWidget;
+ productName = latestCallsWidget;
+ productReference = 5EEE8F9A20C80C23006E4176 /* latestCallsWidget.appex */;
productType = "com.apple.product-type.app-extension";
};
F08F118319C09C6A007D70C2 /* liblinphoneTesterTests */ = {
@@ -3340,6 +3462,26 @@
};
};
};
+ 5E3128FF20D7A37E00CF3AAE = {
+ CreatedOnToolsVersion = 9.4;
+ DevelopmentTeam = Z2V957B3D6;
+ ProvisioningStyle = Automatic;
+ SystemCapabilities = {
+ com.apple.ApplicationGroups.iOS = {
+ enabled = 1;
+ };
+ };
+ };
+ 5EEE8F9920C80C23006E4176 = {
+ CreatedOnToolsVersion = 9.4;
+ DevelopmentTeam = Z2V957B3D6;
+ ProvisioningStyle = Automatic;
+ SystemCapabilities = {
+ com.apple.ApplicationGroups.iOS = {
+ enabled = 1;
+ };
+ };
+ };
F08F118319C09C6A007D70C2 = {
DevelopmentTeam = Z2V957B3D6;
TestTargetID = F0BB8BD41936208100974404;
@@ -3392,6 +3534,8 @@
F0BB8BD41936208100974404 /* liblinphoneTester */,
F08F118319C09C6A007D70C2 /* liblinphoneTesterTests */,
61AE364A20C00B370089D9D3 /* linphoneExtension */,
+ 5EEE8F9920C80C23006E4176 /* latestCallsWidget */,
+ 5E3128FF20D7A37E00CF3AAE /* latestChatroomsWidget */,
);
};
/* End PBXProject section */
@@ -3985,6 +4129,26 @@
buildActionMask = 2147483647;
files = (
61AE365220C00B370089D9D3 /* MainInterface.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5E3128FE20D7A37E00CF3AAE /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5E31291A20D7AAAD00CF3AAE /* chat_group_avatar.png in Resources */,
+ 5E31291320D7AAA100CF3AAE /* avatar.png in Resources */,
+ 5E31290820D7A37E00CF3AAE /* MainInterface.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5EEE8F9820C80C23006E4176 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5E10ED4920D006C9002BF6FE /* chat_group_avatar.png in Resources */,
+ 5E10ED4820D00630002BF6FE /* avatar.png in Resources */,
+ 5EEE8FA220C80C23006E4176 /* MainInterface.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -4215,6 +4379,22 @@
buildActionMask = 2147483647;
files = (
61AE364F20C00B370089D9D3 /* ShareViewController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5E3128FC20D7A37E00CF3AAE /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5E31290520D7A37E00CF3AAE /* TodayViewController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 5EEE8F9620C80C23006E4176 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5EEE8F9F20C80C23006E4176 /* TodayViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -4261,6 +4441,16 @@
target = 61AE364A20C00B370089D9D3 /* linphoneExtension */;
targetProxy = 61AE365420C00B370089D9D3 /* PBXContainerItemProxy */;
};
+ 5E31290B20D7A37E00CF3AAE /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5E3128FF20D7A37E00CF3AAE /* latestChatroomsWidget */;
+ targetProxy = 5E31290A20D7A37E00CF3AAE /* PBXContainerItemProxy */;
+ };
+ 5EEE8FA520C80C23006E4176 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5EEE8F9920C80C23006E4176 /* latestCallsWidget */;
+ targetProxy = 5EEE8FA420C80C23006E4176 /* PBXContainerItemProxy */;
+ };
63058A4E1B4E832500EFAE36 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = KIF;
@@ -4297,6 +4487,22 @@
name = MainInterface.storyboard;
sourceTree = "";
};
+ 5E31290620D7A37E00CF3AAE /* MainInterface.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 5E31290720D7A37E00CF3AAE /* Base */,
+ );
+ name = MainInterface.storyboard;
+ sourceTree = "";
+ };
+ 5EEE8FA020C80C23006E4176 /* MainInterface.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 5EEE8FA120C80C23006E4176 /* Base */,
+ );
+ name = MainInterface.storyboard;
+ sourceTree = "";
+ };
63058A0F1B4E821E00EFAE36 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
@@ -5157,6 +5363,165 @@
name = Distribution;
};
61AE365720C00B370089D9D3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = linphoneExtension/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 1;
+ };
+ name = Debug;
+ };
+ 61AE365820C00B370089D9D3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = linphoneExtension/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 1;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 61AE365920C00B370089D9D3 /* Distribution */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = linphoneExtension/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 1;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Distribution;
+ };
+ 61AE365A20C00B370089D9D3 /* DistributionAdhoc */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = linphoneExtension/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 1;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = DistributionAdhoc;
+ };
+ 5E31290E20D7A37E00CF3AAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -5166,17 +5531,24 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_ENTITLEMENTS = latestChatroomsWidget/latestChatroomsWidget.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = Z2V957B3D6;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
@@ -5187,19 +5559,20 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
- INFOPLIST_FILE = linphoneExtension/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ INFOPLIST_FILE = latestChatroomsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
- PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestChatrooms;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = 1;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
- 61AE365820C00B370089D9D3 /* Release */ = {
+ 5E31290F20D7A37E00CF3AAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -5209,11 +5582,14 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_ENTITLEMENTS = latestChatroomsWidget/latestChatroomsWidget.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
@@ -5221,23 +5597,29 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = Z2V957B3D6;
ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
- INFOPLIST_FILE = linphoneExtension/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ INFOPLIST_FILE = latestChatroomsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
- PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestChatrooms;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = 1;
+ TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
- 61AE365920C00B370089D9D3 /* Distribution */ = {
+ 5E31291020D7A37E00CF3AAE /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -5247,11 +5629,14 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_ENTITLEMENTS = latestChatroomsWidget/latestChatroomsWidget.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
@@ -5259,24 +5644,29 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = Z2V957B3D6;
ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
- INFOPLIST_FILE = linphoneExtension/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ INFOPLIST_FILE = latestChatroomsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
- PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestChatrooms;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = 1;
+ TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Distribution;
};
- 61AE365A20C00B370089D9D3 /* DistributionAdhoc */ = {
+ 5E31291120D7A37E00CF3AAE /* DistributionAdhoc */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -5286,11 +5676,14 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements;
+ CODE_SIGN_ENTITLEMENTS = latestChatroomsWidget/latestChatroomsWidget.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
@@ -5298,19 +5691,216 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = Z2V957B3D6;
ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
- INFOPLIST_FILE = linphoneExtension/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 11.2;
+ INFOPLIST_FILE = latestChatroomsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
- PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.linphoneExtension;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestChatrooms;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
- TARGETED_DEVICE_FAMILY = 1;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = DistributionAdhoc;
+ };
+ 5EEE8FA820C80C24006E4176 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = latestCallsWidget/latestCallsWidget.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = latestCallsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestCalls;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 5EEE8FA920C80C24006E4176 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = latestCallsWidget/latestCallsWidget.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = latestCallsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestCalls;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 5EEE8FAA20C80C24006E4176 /* Distribution */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = latestCallsWidget/latestCallsWidget.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = latestCallsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestCalls;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Distribution;
+ };
+ 5EEE8FAB20C80C24006E4176 /* DistributionAdhoc */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = latestCallsWidget/latestCallsWidget.entitlements;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = Z2V957B3D6;
+ ENABLE_NS_ASSERTIONS = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ INFOPLIST_FILE = latestCallsWidget/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.widget.latestCalls;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE = "";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = DistributionAdhoc;
@@ -5968,6 +6558,28 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
+ 5E31290D20D7A37E00CF3AAE /* Build configuration list for PBXNativeTarget "latestChatroomsWidget" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5E31290E20D7A37E00CF3AAE /* Debug */,
+ 5E31290F20D7A37E00CF3AAE /* Release */,
+ 5E31291020D7A37E00CF3AAE /* Distribution */,
+ 5E31291120D7A37E00CF3AAE /* DistributionAdhoc */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ 5EEE8FA720C80C24006E4176 /* Build configuration list for PBXNativeTarget "latestCallsWidget" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5EEE8FA820C80C24006E4176 /* Debug */,
+ 5EEE8FA920C80C24006E4176 /* Release */,
+ 5EEE8FAA20C80C24006E4176 /* Distribution */,
+ 5EEE8FAB20C80C24006E4176 /* DistributionAdhoc */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "linphone" */ = {
isa = XCConfigurationList;
buildConfigurations = (