From 3065a9a78c0d587b0150774c0acc3d5b9d6ab2c0 Mon Sep 17 00:00:00 2001 From: David Idmansour Date: Fri, 15 Jun 2018 17:06:49 +0200 Subject: [PATCH] fixed memory issue by reducing image size --- Classes/HistoryListTableView.m | 44 +++++++ Classes/LinphoneAppDelegate.m | 1 + .../Base.lproj/MainInterface.storyboard | 8 +- latestCallsWidget/TodayViewController.h | 2 +- latestCallsWidget/TodayViewController.m | 120 ++++++++++-------- 5 files changed, 114 insertions(+), 61 deletions(-) diff --git a/Classes/HistoryListTableView.m b/Classes/HistoryListTableView.m index fc0ddbda5..ebc661cbf 100644 --- a/Classes/HistoryListTableView.m +++ b/Classes/HistoryListTableView.m @@ -167,10 +167,44 @@ } } ++ (UIImage *)resizeImage:(UIImage *)image +{ + float actualHeight = image.size.height; + float actualWidth = image.size.width; + float maxHeight = 200.0; + float maxWidth = 200.0; + 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]; +} + + (void) saveDataToUserDefaults { const bctbx_list_t *logs = linphone_core_get_call_logs(LC); NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName: @"group.belledonne-communications.linphone.widget"]; NSMutableDictionary *dictShare = [NSMutableDictionary dictionary]; + NSMutableDictionary *images = [NSMutableDictionary dictionary]; while (logs != NULL) { LinphoneCallLog *log = (LinphoneCallLog *)logs->data; NSMutableDictionary *dict = [NSMutableDictionary dictionary]; @@ -178,6 +212,15 @@ logs = bctbx_list_next(logs); continue; } + //FastAddressBook *fab = [LinphoneManager instance].fastAddressBook; + Contact * contact = [FastAddressBook getContactWithAddress:linphone_call_log_get_remote_address(log)]; + if (contact && contact.avatar) { + UIImage *image = [self resizeImage:contact.avatar]; + NSData *imageData = UIImageJPEGRepresentation(image, 0); + [images setObject:imageData + forKey:[[NSString stringWithUTF8String:linphone_address_as_string_uri_only(linphone_call_log_get_remote_address(log))] substringFromIndex:4]]; + NSLog(@"bjr%@", [[NSString stringWithUTF8String:linphone_address_as_string_uri_only(linphone_call_log_get_remote_address(log))] substringFromIndex:4]); + } [dict setObject:[NSString stringWithUTF8String:linphone_call_log_get_call_id(log)] forKey:@"id"]; [dict setObject:[NSString stringWithUTF8String:linphone_address_as_string(linphone_call_log_get_remote_address(log))] @@ -192,6 +235,7 @@ logs = bctbx_list_next(logs); } [mySharedDefaults setObject:dictShare forKey:@"logs"]; + [mySharedDefaults setObject:images forKey:@"imageData"]; } - (void)computeSections { diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index c37e877e4..403d3b4c1 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -138,6 +138,7 @@ } } [LinphoneManager.instance.iapManager check]; + [HistoryListTableView saveDataToUserDefaults]; } #pragma deploymate push "ignored-api-availability" diff --git a/latestCallsWidget/Base.lproj/MainInterface.storyboard b/latestCallsWidget/Base.lproj/MainInterface.storyboard index 437d2feaa..defdc0555 100644 --- a/latestCallsWidget/Base.lproj/MainInterface.storyboard +++ b/latestCallsWidget/Base.lproj/MainInterface.storyboard @@ -22,7 +22,7 @@ - +