mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-07 05:53:06 +00:00
Add Image in chat
This commit is contained in:
parent
c83b75f4ba
commit
4accca8b3a
24 changed files with 564 additions and 203 deletions
|
|
@ -21,12 +21,20 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
#import "ChatModel.h"
|
||||
|
||||
@protocol ChatRoomDelegate <NSObject>
|
||||
|
||||
- (BOOL)chatRoomStartImageDownload:(NSURL*)url userInfo:(id)userInfo;
|
||||
- (BOOL)chatRoomStartImageUpload:(UIImage*)image url:(NSURL*)url;
|
||||
|
||||
@end
|
||||
|
||||
@interface ChatRoomTableViewController : UITableViewController {
|
||||
@private
|
||||
NSMutableArray *data;
|
||||
}
|
||||
|
||||
@property (nonatomic, copy) NSString *remoteAddress;
|
||||
@property (nonatomic, retain) id<ChatRoomDelegate> chatRoomDelegate;
|
||||
|
||||
- (void)addChatEntry:(ChatModel*)chat;
|
||||
- (void)updateChatEntry:(ChatModel*)chat;
|
||||
|
|
|
|||
|
|
@ -21,15 +21,25 @@
|
|||
#import "ChatRoomTableViewController.h"
|
||||
#import "UIChatRoomCell.h"
|
||||
#import "Utils.h"
|
||||
#import "PhoneMainView.h"
|
||||
|
||||
#import <NinePatch.h>
|
||||
|
||||
@implementation ChatRoomTableViewController
|
||||
|
||||
@synthesize remoteAddress;
|
||||
@synthesize chatRoomDelegate;
|
||||
|
||||
#pragma mark - Lifecycle Functions
|
||||
|
||||
#pragma mark - ViewController
|
||||
- (void)dealloc {
|
||||
[remoteAddress release];
|
||||
[chatRoomDelegate release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
#pragma mark - ViewController Functions
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
|
@ -73,6 +83,7 @@
|
|||
[self.tableView endUpdates];
|
||||
[self scrollToLastUnread:true];
|
||||
}
|
||||
|
||||
- (void)updateChatEntry:(ChatModel*)chat {
|
||||
if(data == nil) {
|
||||
[LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update entry: null data"];
|
||||
|
|
@ -86,6 +97,7 @@
|
|||
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:FALSE];; //just reload
|
||||
return;
|
||||
}
|
||||
|
||||
- (void)scrollToLastUnread:(BOOL)animated {
|
||||
if(data == nil) {
|
||||
[LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot add entry: null data"];
|
||||
|
|
@ -145,7 +157,7 @@
|
|||
}
|
||||
|
||||
[cell setChat:[data objectAtIndex:[indexPath row]]];
|
||||
|
||||
[cell setChatRoomDelegate:chatRoomDelegate];
|
||||
return cell;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AssetsLibrary/ALAssetsLibrary.h>
|
||||
|
||||
#import "UIToggleButton.h"
|
||||
#import "UICompositeViewController.h"
|
||||
|
|
@ -30,14 +29,11 @@
|
|||
|
||||
#include "linphonecore.h"
|
||||
|
||||
@interface ChatRoomViewController : UIViewController<HPGrowingTextViewDelegate, UICompositeViewDelegate, ImagePickerDelegate, ImageSharingDelegate> {
|
||||
@private
|
||||
@interface ChatRoomViewController : UIViewController<HPGrowingTextViewDelegate, UICompositeViewDelegate, ImagePickerDelegate, ImageSharingDelegate, ChatRoomDelegate> {
|
||||
LinphoneChatRoom *chatRoom;
|
||||
ImageSharing *imageSharing;
|
||||
ALAssetsLibrary *photoLibrary;
|
||||
}
|
||||
|
||||
|
||||
@property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController;
|
||||
@property (nonatomic, retain) IBOutlet UIToggleButton *editButton;
|
||||
@property (nonatomic, retain) IBOutlet HPGrowingTextView* messageField;
|
||||
|
|
@ -50,6 +46,7 @@
|
|||
@property (nonatomic, retain) IBOutlet UIView *messageView;
|
||||
@property (nonatomic, retain) IBOutlet UIImageView *messageBackgroundImage;
|
||||
@property (nonatomic, retain) IBOutlet UIImageView *footerBackgroundImage;
|
||||
@property (nonatomic, retain) IBOutlet UIImageView *transferBackgroundImage;
|
||||
@property (nonatomic, retain) IBOutlet UITapGestureRecognizer *listTapGestureRecognizer;
|
||||
|
||||
@property (nonatomic, copy) NSString *remoteAddress;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
#import "DTActionSheet.h"
|
||||
|
||||
#import <NinePatch.h>
|
||||
|
||||
#import <MobileCoreServices/UTCoreTypes.h>
|
||||
|
||||
@implementation ChatRoomViewController
|
||||
|
||||
|
|
@ -39,6 +39,7 @@
|
|||
@synthesize messageView;
|
||||
@synthesize messageBackgroundImage;
|
||||
@synthesize footerBackgroundImage;
|
||||
@synthesize transferBackgroundImage;
|
||||
@synthesize listTapGestureRecognizer;
|
||||
@synthesize pictureButton;
|
||||
@synthesize imageTransferProgressBar;
|
||||
|
|
@ -53,7 +54,6 @@
|
|||
if (self != nil) {
|
||||
self->chatRoom = NULL;
|
||||
self->imageSharing = NULL;
|
||||
self->photoLibrary = [[ALAssetsLibrary alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
|
@ -72,6 +72,7 @@
|
|||
[messageView release];
|
||||
[messageBackgroundImage release];
|
||||
[footerBackgroundImage release];
|
||||
[transferBackgroundImage release];
|
||||
|
||||
[listTapGestureRecognizer release];
|
||||
|
||||
|
|
@ -80,8 +81,6 @@
|
|||
[imageTransferProgressBar release];
|
||||
[cancelTransferButton release];
|
||||
|
||||
[photoLibrary release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
|
@ -110,6 +109,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[tableController setChatRoomDelegate:self];
|
||||
|
||||
// Set selected+over background: IB lack !
|
||||
[editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"]
|
||||
|
|
@ -122,6 +122,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
messageField.contentInset = UIEdgeInsetsZero;
|
||||
messageField.backgroundColor = [UIColor clearColor];
|
||||
[sendButton setEnabled:FALSE];
|
||||
[listTapGestureRecognizer setEnabled:FALSE];
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -150,9 +151,11 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
|
||||
[messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
|
||||
forNinePatchNamed:@"chat_field"]];
|
||||
|
||||
[footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
|
||||
forNinePatchNamed:@"chat_background"]];
|
||||
[transferBackgroundImage setImage:[TUNinePatchCache imageOfSize:[transferBackgroundImage bounds].size
|
||||
forNinePatchNamed:@"chat_background"]];
|
||||
|
||||
BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] != NULL
|
||||
&& [[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] length]>0;
|
||||
|
||||
|
|
@ -273,7 +276,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
[thiz.tableController updateChatEntry:chat];
|
||||
}
|
||||
|
||||
- (BOOL)sendMessage:(NSString *)message withExterlBodyUrl:(NSString*) url{
|
||||
- (BOOL)sendMessage:(NSString *)message withExterlBodyUrl:(NSURL*)externalUrl withInternalUrl:(NSURL*)internalUrl {
|
||||
if(![LinphoneManager isLcReady]) {
|
||||
[LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Linphone core not ready"];
|
||||
return FALSE;
|
||||
|
|
@ -290,7 +293,11 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
ChatModel *chat = [[ChatModel alloc] init];
|
||||
[chat setRemoteContact:remoteAddress];
|
||||
[chat setLocalContact:@""];
|
||||
[chat setMessage:message];
|
||||
if(internalUrl == nil) {
|
||||
[chat setMessage:message];
|
||||
} else {
|
||||
[chat setMessage:[internalUrl absoluteString]];
|
||||
}
|
||||
[chat setDirection:[NSNumber numberWithInt:0]];
|
||||
[chat setTime:[NSDate date]];
|
||||
[chat setRead:[NSNumber numberWithInt:1]];
|
||||
|
|
@ -301,9 +308,9 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
|
||||
LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom, [message UTF8String]);
|
||||
linphone_chat_message_set_user_data(msg, chat);
|
||||
if (url) {
|
||||
linphone_chat_message_set_external_body_url(msg, [url UTF8String]);
|
||||
}
|
||||
if(externalUrl) {
|
||||
linphone_chat_message_set_external_body_url(msg, [[externalUrl absoluteString] UTF8String]);
|
||||
}
|
||||
linphone_chat_room_send_message2(chatRoom, msg, message_status, self);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -329,19 +336,6 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
}
|
||||
ms_free(fromStr);
|
||||
}
|
||||
|
||||
if ([[notif userInfo] objectForKey:@"external_body_url"]) {
|
||||
NSString *pendingFileUrl = [[[notif userInfo] objectForKey:@"external_body_url"] retain];
|
||||
|
||||
DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Incoming file stored to your photo library",nil)] autorelease];
|
||||
[sheet addButtonWithTitle:NSLocalizedString(@"Accept",nil) block:^(){
|
||||
imageSharing = [ImageSharing imageSharingDownload:[NSURL URLWithString:pendingFileUrl] delegate:self];
|
||||
[footerView setHidden:TRUE];
|
||||
[transferView setHidden:FALSE];
|
||||
}];
|
||||
[sheet addCancelButtonWithTitle:NSLocalizedString(@"Ignore",nil)];
|
||||
[sheet showInView:[PhoneMainView instance].view];
|
||||
}
|
||||
} else {
|
||||
[LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"];
|
||||
}
|
||||
|
|
@ -354,8 +348,13 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
if(editButton.selected) {
|
||||
[tableController setEditing:FALSE animated:TRUE];
|
||||
[editButton setOff];
|
||||
[listTapGestureRecognizer setEnabled:TRUE];
|
||||
}
|
||||
[listTapGestureRecognizer setEnabled:TRUE];
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
- (BOOL)growingTextViewShouldEndEditing:(HPGrowingTextView *)growingTextView {
|
||||
[listTapGestureRecognizer setEnabled:FALSE];
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -391,13 +390,12 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
}
|
||||
|
||||
- (IBAction)onEditClick:(id)event {
|
||||
[listTapGestureRecognizer setEnabled:[tableController isEditing]];
|
||||
[tableController setEditing:![tableController isEditing] animated:TRUE];
|
||||
[messageField resignFirstResponder];
|
||||
}
|
||||
|
||||
- (IBAction)onSendClick:(id)event {
|
||||
if([self sendMessage:[messageField text] withExterlBodyUrl:nil]) {
|
||||
if([self sendMessage:[messageField text] withExterlBodyUrl:nil withInternalUrl:nil]) {
|
||||
[messageField setText:@""];
|
||||
[self onMessageChange:nil];
|
||||
}
|
||||
|
|
@ -428,7 +426,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
|
||||
// Displays a control that allows the user to choose picture or
|
||||
// movie capture, if both are available:
|
||||
controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:type];
|
||||
controller.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
|
||||
|
||||
// Hides the controls for moving & scaling pictures, or for
|
||||
// trimming movies. To instead show the controls, use YES.
|
||||
|
|
@ -445,6 +443,30 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
}
|
||||
|
||||
|
||||
#pragma mark ChatRoomDelegate
|
||||
|
||||
- (BOOL)chatRoomStartImageDownload:(NSURL*)url userInfo:(id)userInfo {
|
||||
if(imageSharing == nil) {
|
||||
imageSharing = [ImageSharing imageSharingDownload:url delegate:self userInfo:userInfo];
|
||||
[footerView setHidden:TRUE];
|
||||
[transferView setHidden:FALSE];
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- (BOOL)chatRoomStartImageUpload:(UIImage*)image url:(NSURL*)url{
|
||||
if(imageSharing == nil) {
|
||||
NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
|
||||
imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self userInfo:url];
|
||||
[footerView setHidden:TRUE];
|
||||
[transferView setHidden:FALSE];
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark ImageSharingDelegate
|
||||
|
||||
- (void)imageSharingProgress:(ImageSharing*)aimageSharing progress:(float)progress {
|
||||
|
|
@ -486,7 +508,9 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
}
|
||||
|
||||
- (void)imageSharingUploadDone:(ImageSharing*)aimageSharing url:(NSURL*)url{
|
||||
[self sendMessage:NSLocalizedString(@"Image sent", nil) withExterlBodyUrl:[url absoluteString]];
|
||||
NSURL *imageURL = [aimageSharing userInfo];
|
||||
|
||||
[self sendMessage:nil withExterlBodyUrl:url withInternalUrl:imageURL];
|
||||
|
||||
[footerView setHidden:FALSE];
|
||||
[transferView setHidden:TRUE];
|
||||
|
|
@ -497,30 +521,59 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
|
|||
[footerView setHidden:FALSE];
|
||||
[transferView setHidden:TRUE];
|
||||
|
||||
[photoLibrary writeImageToSavedPhotosAlbum:(CGImageRef)image
|
||||
metadata:nil
|
||||
completionBlock:^(NSURL *assetURL, NSError *error){
|
||||
if (error) {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]",[error localizedDescription]];
|
||||
} else {
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]",[assetURL absoluteString]];
|
||||
}
|
||||
ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
|
||||
if(controller != nil) {
|
||||
[controller setImage:image];
|
||||
}
|
||||
}];
|
||||
ChatModel *chat = (ChatModel *)[imageSharing userInfo];
|
||||
[[LinphoneManager instance].photoLibrary writeImageToSavedPhotosAlbum:image.CGImage
|
||||
metadata:nil
|
||||
completionBlock:^(NSURL *assetURL, NSError *error){
|
||||
if (error) {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]", [error localizedDescription]];
|
||||
|
||||
UIAlertView* errorAlert = [UIAlertView alloc];
|
||||
[errorAlert initWithTitle:NSLocalizedString(@"Transfer error", nil)
|
||||
message:NSLocalizedString(@"Cannot write image to photo library", nil)
|
||||
delegate:nil
|
||||
cancelButtonTitle:NSLocalizedString(@"Ok",nil)
|
||||
otherButtonTitles:nil ,nil];
|
||||
[errorAlert show];
|
||||
[errorAlert release];
|
||||
return;
|
||||
}
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]", [assetURL absoluteString]];
|
||||
[chat setMessage:[assetURL absoluteString]];
|
||||
[chat update];
|
||||
[tableController updateChatEntry:chat];
|
||||
}];
|
||||
imageSharing = NULL;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark ImagePickerDelegate
|
||||
|
||||
- (void)imagePickerDelegateImage:(UIImage*)image {
|
||||
NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
|
||||
imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self];
|
||||
[footerView setHidden:TRUE];
|
||||
[transferView setHidden:FALSE];
|
||||
- (void)imagePickerDelegateImage:(UIImage*)image info:(NSDictionary *)info {
|
||||
NSURL *url = [info valueForKey:UIImagePickerControllerReferenceURL];
|
||||
if(url != nil) {
|
||||
[self chatRoomStartImageUpload:image url:url];
|
||||
} else {
|
||||
[[LinphoneManager instance].photoLibrary writeImageToSavedPhotosAlbum:image.CGImage
|
||||
metadata:nil
|
||||
completionBlock:^(NSURL *assetURL, NSError *error){
|
||||
if (error) {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]", [error localizedDescription]];
|
||||
|
||||
UIAlertView* errorAlert = [UIAlertView alloc];
|
||||
[errorAlert initWithTitle:NSLocalizedString(@"Transfer error", nil)
|
||||
message:NSLocalizedString(@"Cannot write image to photo library", nil)
|
||||
delegate:nil
|
||||
cancelButtonTitle:NSLocalizedString(@"Ok",nil)
|
||||
otherButtonTitles:nil ,nil];
|
||||
[errorAlert show];
|
||||
[errorAlert release];
|
||||
return;
|
||||
}
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]", [assetURL absoluteString]];
|
||||
[self chatRoomStartImageUpload:image url:assetURL];
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,14 +21,20 @@
|
|||
|
||||
@protocol ImagePickerDelegate <NSObject>
|
||||
|
||||
- (void)imagePickerDelegateImage:(UIImage*)image;
|
||||
- (void)imagePickerDelegateImage:(UIImage*)image info:(NSDictionary *)info;
|
||||
|
||||
@end
|
||||
|
||||
@interface ImagePickerViewController : UIImagePickerController <UICompositeViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate> {
|
||||
@interface ImagePickerViewController : UIViewController <UICompositeViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIPopoverControllerDelegate> {
|
||||
@private
|
||||
UIImagePickerController *pickerController;
|
||||
UIPopoverController *popoverController;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) id<ImagePickerDelegate> imagePickerDelegate;
|
||||
@property(nonatomic, retain) id<ImagePickerDelegate> imagePickerDelegate;
|
||||
@property(nonatomic) UIImagePickerControllerSourceType sourceType;
|
||||
@property(nonatomic,copy) NSArray *mediaTypes;
|
||||
@property(nonatomic) BOOL allowsEditing;
|
||||
|
||||
+ (void)promptSelectSource:(void (^)(UIImagePickerControllerSourceType))block;
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,30 @@
|
|||
@implementation ImagePickerViewController
|
||||
|
||||
@synthesize imagePickerDelegate;
|
||||
@synthesize sourceType;
|
||||
@synthesize mediaTypes;
|
||||
@synthesize allowsEditing;
|
||||
|
||||
|
||||
#pragma mark - Lifecycle Functions
|
||||
|
||||
- (id)init {
|
||||
self = [super init];
|
||||
if (self != nil) {
|
||||
pickerController = [[UIImagePickerController alloc] init];
|
||||
if([LinphoneManager runningOnIpad]) {
|
||||
popoverController = [[UIPopoverController alloc] initWithContentViewController:pickerController];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[pickerController release];
|
||||
[popoverController release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - UICompositeViewDelegate Functions
|
||||
|
|
@ -50,7 +74,55 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self setDelegate:self];
|
||||
|
||||
[self.view setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
|
||||
if(popoverController == nil) {
|
||||
[pickerController.view setFrame:[self.view bounds]];
|
||||
[self.view addSubview:[pickerController view]];
|
||||
} else {
|
||||
[popoverController setDelegate:self];
|
||||
}
|
||||
[pickerController setDelegate:self];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
if(popoverController != nil) {
|
||||
[popoverController presentPopoverFromRect:CGRectZero inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:FALSE];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[super viewWillDisappear:animated];
|
||||
if(popoverController != nil) {
|
||||
[popoverController dismissPopoverAnimated: NO];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Property Functions
|
||||
|
||||
- (BOOL)allowsEditing {
|
||||
return pickerController.allowsEditing;
|
||||
}
|
||||
|
||||
- (void)setAllowsEditing:(BOOL)aallowsEditing {
|
||||
pickerController.allowsEditing = aallowsEditing;
|
||||
}
|
||||
|
||||
- (UIImagePickerControllerSourceType)sourceType {
|
||||
return pickerController.sourceType;
|
||||
}
|
||||
|
||||
- (void)setSourceType:(UIImagePickerControllerSourceType)asourceType {
|
||||
pickerController.sourceType = asourceType;
|
||||
}
|
||||
|
||||
- (NSArray *)mediaTypes {
|
||||
return pickerController.mediaTypes;
|
||||
}
|
||||
|
||||
- (void)setMediaTypes:(NSArray *)amediaTypes {
|
||||
pickerController.mediaTypes = amediaTypes;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -88,7 +160,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
image = [info objectForKey:UIImagePickerControllerOriginalImage];
|
||||
}
|
||||
if(image != nil && imagePickerDelegate != nil) {
|
||||
[imagePickerDelegate imagePickerDelegateImage:image];
|
||||
[imagePickerDelegate imagePickerDelegateImage:image info:info];
|
||||
}
|
||||
[self dismiss];
|
||||
}
|
||||
|
|
@ -97,4 +169,9 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
[self dismiss];
|
||||
}
|
||||
|
||||
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)apopoverController {
|
||||
[self dismiss];
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -38,11 +38,13 @@
|
|||
int statusCode;
|
||||
}
|
||||
|
||||
+ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id<ImageSharingDelegate>)delegate;
|
||||
+ (id)imageSharingDownload:(NSURL*)url delegate:(id<ImageSharingDelegate>)delegate;
|
||||
+ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id<ImageSharingDelegate>)delegate userInfo:(id)userInfo;
|
||||
+ (id)imageSharingDownload:(NSURL*)url delegate:(id<ImageSharingDelegate>)delegate userInfo:(id)userInfo;
|
||||
|
||||
- (void)cancel;
|
||||
|
||||
@property (nonatomic, retain) id userInfo;
|
||||
|
||||
@property (nonatomic, readonly) BOOL upload;
|
||||
@property (nonatomic, readonly) NSMutableData* data;
|
||||
@property (nonatomic, readonly) NSURLConnection* connection;
|
||||
|
|
|
|||
|
|
@ -26,13 +26,14 @@
|
|||
@synthesize connection;
|
||||
@synthesize data;
|
||||
@synthesize upload;
|
||||
|
||||
@synthesize userInfo;
|
||||
|
||||
#pragma mark - Lifecycle Functions
|
||||
|
||||
+ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id<ImageSharingDelegate>)delegate {
|
||||
+ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id<ImageSharingDelegate>)delegate userInfo:(id)auserInfo{
|
||||
ImageSharing *imgs = [[ImageSharing alloc] init];
|
||||
if(imgs != nil) {
|
||||
imgs.userInfo = auserInfo;
|
||||
imgs->upload = TRUE;
|
||||
imgs->delegate = [delegate retain];
|
||||
imgs->data = [[NSMutableData alloc] init];
|
||||
|
|
@ -44,9 +45,10 @@
|
|||
return imgs;
|
||||
}
|
||||
|
||||
+ (id)imageSharingDownload:(NSURL*)url delegate:(id<ImageSharingDelegate>)delegate {
|
||||
+ (id)imageSharingDownload:(NSURL*)url delegate:(id<ImageSharingDelegate>)delegate userInfo:(id)auserInfo{
|
||||
ImageSharing *imgs = [[ImageSharing alloc] init];
|
||||
if(imgs != nil) {
|
||||
imgs.userInfo = auserInfo;
|
||||
imgs->upload = FALSE;
|
||||
imgs->delegate = [delegate retain];
|
||||
imgs->data = [[NSMutableData alloc] init];
|
||||
|
|
@ -62,6 +64,7 @@
|
|||
[connection release];
|
||||
[data release];
|
||||
[delegate release];
|
||||
[userInfo release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
#import <AVFoundation/AVAudioSession.h>
|
||||
#import <SystemConfiguration/SCNetworkReachability.h>
|
||||
#import <AudioToolbox/AudioToolbox.h>
|
||||
#import <AssetsLibrary/ALAssetsLibrary.h>
|
||||
|
||||
#import <sqlite3.h>
|
||||
|
||||
#import "IASKSettingsReader.h"
|
||||
|
|
@ -140,6 +142,7 @@ typedef struct _LinphoneManagerSounds {
|
|||
@property (readonly) LinphoneManagerSounds sounds;
|
||||
@property (readonly) NSMutableArray *logs;
|
||||
@property (nonatomic, assign) BOOL speakerEnabled;
|
||||
@property (readonly) ALAssetsLibrary *photoLibrary;
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ extern void libmsbcg729_init();
|
|||
@synthesize sounds;
|
||||
@synthesize logs;
|
||||
@synthesize speakerEnabled;
|
||||
@synthesize photoLibrary;
|
||||
|
||||
struct codec_name_pref_table{
|
||||
const char *name;
|
||||
|
|
@ -218,6 +219,7 @@ struct codec_name_pref_table codec_pref_table[]={
|
|||
[self openDatabase];
|
||||
[self copyDefaultSettings];
|
||||
lastRemoteNotificationTime=0;
|
||||
photoLibrary = [[ALAssetsLibrary alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
|
@ -239,6 +241,7 @@ struct codec_name_pref_table codec_pref_table[]={
|
|||
[LinphoneLogger logc:LinphoneLoggerError format:"cannot un register route change handler [%ld]", lStatus];
|
||||
}
|
||||
|
||||
[photoLibrary release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
|
@ -433,7 +436,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
|
|||
[chat setLocalContact:@""];
|
||||
[chat setRemoteContact:[NSString stringWithUTF8String:fromStr]];
|
||||
if (linphone_chat_message_get_external_body_url(msg)) {
|
||||
[chat setMessage:NSLocalizedString(@"Incoming file",nil)];
|
||||
[chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_external_body_url(msg)]];
|
||||
} else {
|
||||
[chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_text(msg)]];
|
||||
}
|
||||
|
|
@ -443,17 +446,12 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
|
|||
[chat create];
|
||||
|
||||
ms_free(fromStr);
|
||||
NSString* ext_body_url=nil;
|
||||
if (linphone_chat_message_get_external_body_url(msg)) {
|
||||
ext_body_url=[NSString stringWithUTF8String:linphone_chat_message_get_external_body_url(msg)];
|
||||
}
|
||||
// Post event
|
||||
NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSValue valueWithPointer:room], @"room",
|
||||
[NSValue valueWithPointer:linphone_chat_message_get_from(msg)], @"from",
|
||||
chat.message, @"message",
|
||||
chat, @"chat",
|
||||
ext_body_url,@"external_body_url",
|
||||
nil];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self userInfo:dict];
|
||||
[chat release];
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "ChatModel.h"
|
||||
#import "ChatRoomTableViewController.h"
|
||||
|
||||
|
||||
@interface UIChatRoomCell : UITableViewCell {
|
||||
}
|
||||
|
|
@ -33,10 +35,15 @@
|
|||
@property (nonatomic, retain) IBOutlet UIButton *deleteButton;
|
||||
@property (nonatomic, retain) IBOutlet UILabel *dateLabel;
|
||||
@property (nonatomic, retain) IBOutlet UIImageView* statusImage;
|
||||
@property (nonatomic, retain) IBOutlet UIButton* downloadButton;
|
||||
|
||||
- (id)initWithIdentifier:(NSString*)identifier;
|
||||
+ (CGFloat)height:(ChatModel*)chat width:(int)width;
|
||||
|
||||
@property (nonatomic, retain) id<ChatRoomDelegate> chatRoomDelegate;
|
||||
|
||||
- (IBAction)onDeleteClick:(id)event;
|
||||
- (IBAction)onDownloadClick:(id)event;
|
||||
- (IBAction)onImageClick:(id)event;
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -19,7 +19,11 @@
|
|||
|
||||
#import "UIChatRoomCell.h"
|
||||
#import "Utils.h"
|
||||
#import "LinphoneManager.h"
|
||||
#import "PhoneMainView.h"
|
||||
|
||||
#import <AssetsLibrary/ALAsset.h>
|
||||
#import <AssetsLibrary/ALAssetRepresentation.h>
|
||||
#import <NinePatch.h>
|
||||
#include "linphonecore.h"
|
||||
|
||||
|
|
@ -34,6 +38,8 @@
|
|||
@synthesize dateLabel;
|
||||
@synthesize chat;
|
||||
@synthesize statusImage;
|
||||
@synthesize downloadButton;
|
||||
@synthesize chatRoomDelegate;
|
||||
|
||||
static const CGFloat CELL_MIN_HEIGHT = 40.0f;
|
||||
static const CGFloat CELL_MIN_WIDTH = 150.0f;
|
||||
|
|
@ -58,6 +64,7 @@ static UIFont *CELL_FONT = nil;
|
|||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[chatRoomDelegate release];
|
||||
[backgroundImage release];
|
||||
[innerView release];
|
||||
[bubbleView release];
|
||||
|
|
@ -67,6 +74,7 @@ static UIFont *CELL_FONT = nil;
|
|||
[dateLabel release];
|
||||
[statusImage release];
|
||||
[chat release];
|
||||
[downloadButton release];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
|
@ -92,15 +100,39 @@ static UIFont *CELL_FONT = nil;
|
|||
[LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room cell: null chat"];
|
||||
return;
|
||||
}
|
||||
if(true/*Change when image will be supported */) {
|
||||
|
||||
if([UIChatRoomCell isExternalImage:[chat message]]) {
|
||||
[messageLabel setHidden:TRUE];
|
||||
|
||||
[messageImageView setImage:nil];
|
||||
[messageImageView setHidden:TRUE];
|
||||
|
||||
[downloadButton setHidden:FALSE];
|
||||
} else if([UIChatRoomCell isInternalImage:[chat message]]) {
|
||||
[messageLabel setHidden:TRUE];
|
||||
|
||||
[[LinphoneManager instance].photoLibrary assetForURL:[NSURL URLWithString:[chat message]] resultBlock:^(ALAsset *asset) {
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
|
||||
ALAssetRepresentation* representation = [asset defaultRepresentation];
|
||||
UIImage *image = [UIImage imageWithCGImage:[representation fullResolutionImage]];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[messageImageView setImage:image];
|
||||
});
|
||||
});
|
||||
} failureBlock:^(NSError *error) {
|
||||
[LinphoneLogger log:LinphoneLoggerError format:@"Can't read image"];
|
||||
}];
|
||||
|
||||
[messageImageView setHidden:FALSE];
|
||||
[downloadButton setHidden:TRUE];
|
||||
} else {
|
||||
[messageLabel setHidden:FALSE];
|
||||
[messageLabel setText:[chat message]];
|
||||
|
||||
[messageImageView setImage:nil];
|
||||
[messageImageView setHidden:TRUE];
|
||||
} else {
|
||||
[messageLabel setHidden:TRUE];
|
||||
|
||||
[messageImageView setHidden:FALSE];
|
||||
[downloadButton setHidden:TRUE];
|
||||
}
|
||||
|
||||
// Date
|
||||
|
|
@ -112,16 +144,16 @@ static UIFont *CELL_FONT = nil;
|
|||
[dateLabel setText:[dateFormatter stringFromDate:[chat time]]];
|
||||
[dateFormatter release];
|
||||
if ([chat.state intValue] == LinphoneChatMessageStateInProgress) {
|
||||
[statusImage setImage:[UIImage imageNamed:@"chat_message_inprogress.png"] ];
|
||||
statusImage.hidden=FALSE;
|
||||
[statusImage setImage:[UIImage imageNamed:@"chat_message_inprogress.png"]];
|
||||
statusImage.hidden = FALSE;
|
||||
} else if ([chat.state intValue] == LinphoneChatMessageStateDelivered) {
|
||||
[statusImage setImage:[UIImage imageNamed:@"chat_message_delivered.png"] ];
|
||||
statusImage.hidden=FALSE;
|
||||
[statusImage setImage:[UIImage imageNamed:@"chat_message_delivered.png"]];
|
||||
statusImage.hidden = FALSE;
|
||||
} else if ([chat.state intValue] == LinphoneChatMessageStateNotDelivered) {
|
||||
[statusImage setImage:[UIImage imageNamed:@"chat_message_not_delivered.png"]];
|
||||
statusImage.hidden=FALSE;
|
||||
statusImage.hidden = FALSE;
|
||||
} else {
|
||||
statusImage.hidden=TRUE;
|
||||
statusImage.hidden = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -144,9 +176,17 @@ static UIFont *CELL_FONT = nil;
|
|||
}
|
||||
}
|
||||
|
||||
+ (BOOL)isExternalImage:(NSString *)message {
|
||||
return [message hasPrefix:@"http:"] || [message hasPrefix:@"https:"];
|
||||
}
|
||||
|
||||
+ (BOOL)isInternalImage:(NSString *)message {
|
||||
return [message hasPrefix:@"assets-library:"];
|
||||
}
|
||||
|
||||
+ (CGSize)viewSize:(ChatModel*)chat width:(int)width {
|
||||
CGSize messageSize;
|
||||
if(true/*Change when image will be supported */) {
|
||||
if(!([UIChatRoomCell isExternalImage:[chat message]] || [UIChatRoomCell isInternalImage:[chat message]])) {
|
||||
if(CELL_FONT == nil) {
|
||||
CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE];
|
||||
}
|
||||
|
|
@ -218,4 +258,15 @@ static UIFont *CELL_FONT = nil;
|
|||
}
|
||||
}
|
||||
|
||||
- (IBAction)onDownloadClick:(id)event {
|
||||
[chatRoomDelegate chatRoomStartImageDownload:[NSURL URLWithString:chat.message] userInfo:chat];
|
||||
}
|
||||
|
||||
- (IBAction)onImageClick:(id)event {
|
||||
ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
|
||||
if(controller != nil) {
|
||||
[controller setImage:messageImageView.image];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
<string>IBUIButton</string>
|
||||
<string>IBUIImageView</string>
|
||||
<string>IBUILabel</string>
|
||||
<string>IBUITapGestureRecognizer</string>
|
||||
<string>IBUIView</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
|
|
@ -69,7 +70,7 @@
|
|||
<reference key="NSNextKeyView" ref="281972462"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<int key="IBUIContentMode">1</int>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<array key="IBUIGestureRecognizers" id="0"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUILabel" id="281972462">
|
||||
|
|
@ -78,7 +79,7 @@
|
|||
<string key="NSFrameSize">{294, 104}</string>
|
||||
<reference key="NSSuperview" ref="773132586"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="859609488"/>
|
||||
<reference key="NSNextKeyView" ref="872109847"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor" id="765717609">
|
||||
<int key="NSColorSpace">3</int>
|
||||
|
|
@ -109,6 +110,41 @@
|
|||
</object>
|
||||
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
|
||||
</object>
|
||||
<object class="IBUIButton" id="872109847">
|
||||
<reference key="NSNextResponder" ref="773132586"/>
|
||||
<int key="NSvFlags">301</int>
|
||||
<string key="NSFrame">{{81, 33}, {132, 37}}</string>
|
||||
<reference key="NSSuperview" ref="773132586"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="859609488"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUIContentHorizontalAlignment">0</int>
|
||||
<int key="IBUIContentVerticalAlignment">0</int>
|
||||
<string key="IBUINormalTitle">Download image</string>
|
||||
<object class="NSColor" key="IBUIHighlightedTitleColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="IBUINormalTitleColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="IBUINormalTitleShadowColor" id="479423909">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
<object class="IBUIFontDescription" key="IBUIFontDescription" id="178165125">
|
||||
<int key="type">2</int>
|
||||
<double key="pointSize">15</double>
|
||||
</object>
|
||||
<object class="NSFont" key="IBUIFont" id="126548582">
|
||||
<string key="NSName">Helvetica-Bold</string>
|
||||
<double key="NSSize">15</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{294, 104}</string>
|
||||
<reference key="NSSuperview" ref="456806949"/>
|
||||
|
|
@ -117,7 +153,6 @@
|
|||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<reference key="IBUIBackgroundColor" ref="765717609"/>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUILabel" id="504194589">
|
||||
|
|
@ -135,10 +170,7 @@
|
|||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<string key="IBUIText">09/09/2009 at 09:09</string>
|
||||
<object class="NSColor" key="IBUITextColor" id="479423909">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
<reference key="IBUITextColor" ref="479423909"/>
|
||||
<nil key="IBUIHighlightedColor"/>
|
||||
<int key="IBUIBaselineAdjustment">0</int>
|
||||
<float key="IBUIMinimumFontSize">8</float>
|
||||
|
|
@ -194,15 +226,8 @@
|
|||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">list_delete_default.png</string>
|
||||
</object>
|
||||
<object class="IBUIFontDescription" key="IBUIFontDescription">
|
||||
<int key="type">2</int>
|
||||
<double key="pointSize">15</double>
|
||||
</object>
|
||||
<object class="NSFont" key="IBUIFont">
|
||||
<string key="NSName">Helvetica-Bold</string>
|
||||
<double key="NSSize">15</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<reference key="IBUIFontDescription" ref="178165125"/>
|
||||
<reference key="IBUIFont" ref="126548582"/>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{13, 13}, {294, 114}}</string>
|
||||
|
|
@ -245,6 +270,7 @@
|
|||
<reference key="IBUIBackgroundColor" ref="765717609"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUITapGestureRecognizer" id="713762198"/>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
|
|
@ -328,6 +354,14 @@
|
|||
</object>
|
||||
<int key="connectionID">31</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">downloadButton</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="872109847"/>
|
||||
</object>
|
||||
<int key="connectionID">34</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchEventConnection" key="connection">
|
||||
<string key="label">onDeleteClick:</string>
|
||||
|
|
@ -337,12 +371,39 @@
|
|||
</object>
|
||||
<int key="connectionID">32</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletCollectionConnection" key="connection">
|
||||
<string key="label">gestureRecognizers</string>
|
||||
<reference key="source" ref="546512518"/>
|
||||
<reference key="destination" ref="713762198"/>
|
||||
<string key="cachedDesigntimeCollectionClassName">NSArray</string>
|
||||
<bool key="addsContentToExistingCollection">YES</bool>
|
||||
</object>
|
||||
<int key="connectionID">41</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchEventConnection" key="connection">
|
||||
<string key="label">onDownloadClick:</string>
|
||||
<reference key="source" ref="872109847"/>
|
||||
<reference key="destination" ref="841351856"/>
|
||||
<int key="IBEventType">7</int>
|
||||
</object>
|
||||
<int key="connectionID">39</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchEventConnection" key="connection">
|
||||
<string key="label">onImageClick:</string>
|
||||
<reference key="source" ref="713762198"/>
|
||||
<reference key="destination" ref="841351856"/>
|
||||
</object>
|
||||
<int key="connectionID">42</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
|
|
@ -421,6 +482,7 @@
|
|||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="281972462"/>
|
||||
<reference ref="546512518"/>
|
||||
<reference ref="872109847"/>
|
||||
</array>
|
||||
<reference key="parent" ref="456806949"/>
|
||||
<string key="objectName">messageView</string>
|
||||
|
|
@ -428,6 +490,7 @@
|
|||
<object class="IBObjectRecord">
|
||||
<int key="objectID">28</int>
|
||||
<reference key="object" ref="546512518"/>
|
||||
<array class="NSMutableArray" key="children"/>
|
||||
<reference key="parent" ref="773132586"/>
|
||||
<string key="objectName">messageImageView</string>
|
||||
</object>
|
||||
|
|
@ -437,6 +500,17 @@
|
|||
<reference key="parent" ref="773132586"/>
|
||||
<string key="objectName">messageLabel</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">33</int>
|
||||
<reference key="object" ref="872109847"/>
|
||||
<reference key="parent" ref="773132586"/>
|
||||
<string key="objectName">downloadButton</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">40</int>
|
||||
<reference key="object" ref="713762198"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
|
|
@ -455,6 +529,8 @@
|
|||
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</dictionary>
|
||||
|
|
@ -462,29 +538,38 @@
|
|||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">32</int>
|
||||
<int key="maxID">42</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIChatRoomCell</string>
|
||||
<string key="superclassName">UITableViewCell</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<string key="NS.key.0">onDeleteClick:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">onDeleteClick:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<dictionary class="NSMutableDictionary" key="actions">
|
||||
<string key="onDeleteClick:">id</string>
|
||||
<string key="onDownloadClick:">id</string>
|
||||
<string key="onImageClick:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="onDeleteClick:">
|
||||
<string key="name">onDeleteClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="onDownloadClick:">
|
||||
<string key="name">onDownloadClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="onImageClick:">
|
||||
<string key="name">onImageClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="backgroundImage">UIImageView</string>
|
||||
<string key="bubbleView">UIView</string>
|
||||
<string key="dateLabel">UILabel</string>
|
||||
<string key="deleteButton">UIButton</string>
|
||||
<string key="downloadButton">UIButton</string>
|
||||
<string key="innerView">UIView</string>
|
||||
<string key="messageImageView">UIImageView</string>
|
||||
<string key="messageLabel">UILabel</string>
|
||||
|
|
@ -507,6 +592,10 @@
|
|||
<string key="name">deleteButton</string>
|
||||
<string key="candidateClassName">UIButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="downloadButton">
|
||||
<string key="name">downloadButton</string>
|
||||
<string key="candidateClassName">UIButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="innerView">
|
||||
<string key="name">innerView</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@
|
|||
|
||||
#pragma mark - ContactDetailsImagePickerDelegate Functions
|
||||
|
||||
- (void)imagePickerDelegateImage:(UIImage*)image {
|
||||
- (void)imagePickerDelegateImage:(UIImage*)image info:(NSDictionary *)info{
|
||||
NSError* error = NULL;
|
||||
if(!ABPersonRemoveImageData(contact, (CFErrorRef*)error)) {
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]];
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@
|
|||
</object>
|
||||
<object class="IBUIView" id="229066993">
|
||||
<reference key="NSNextResponder" ref="715329044"/>
|
||||
<int key="NSvFlags">-2147483356</int>
|
||||
<int key="NSvFlags">-2147483382</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIImageView" id="661332796">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
|
|
@ -166,10 +166,7 @@
|
|||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="164391443"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA</bytes>
|
||||
</object>
|
||||
<reference key="IBUIBackgroundColor" ref="460939904"/>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSCustomResource" key="IBUIImage" id="172588711">
|
||||
|
|
@ -179,7 +176,7 @@
|
|||
</object>
|
||||
<object class="IBUIButton" id="391057061">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">297</int>
|
||||
<string key="NSFrame">{{250, 0}, {70, 59}}</string>
|
||||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
@ -214,7 +211,7 @@
|
|||
</object>
|
||||
<object class="IBUIProgressView" id="164391443">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">298</int>
|
||||
<string key="NSFrame">{{20, 25}, {213, 9}}</string>
|
||||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
@ -274,6 +271,7 @@
|
|||
<string key="NSFrame">{{250, 0}, {70, 59}}</string>
|
||||
<reference key="NSSuperview" ref="833509359"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
|
||||
|
|
@ -639,6 +637,14 @@
|
|||
</object>
|
||||
<int key="connectionID">86</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">transferBackgroundImage</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="661332796"/>
|
||||
</object>
|
||||
<int key="connectionID">88</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
|
|
@ -930,7 +936,7 @@
|
|||
<int key="objectID">83</int>
|
||||
<reference key="object" ref="661332796"/>
|
||||
<reference key="parent" ref="229066993"/>
|
||||
<string key="objectName">footerBackgroundImage</string>
|
||||
<string key="objectName">transfertBackgroundImage</string>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
|
|
@ -976,7 +982,7 @@
|
|||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">87</int>
|
||||
<int key="maxID">88</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
|
@ -1047,6 +1053,7 @@
|
|||
<string key="pictureButton">UIButton</string>
|
||||
<string key="sendButton">UIButton</string>
|
||||
<string key="tableController">ChatRoomTableViewController</string>
|
||||
<string key="transferBackgroundImage">UIImageView</string>
|
||||
<string key="transferView">UIView</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
|
|
@ -1114,6 +1121,10 @@
|
|||
<string key="name">tableController</string>
|
||||
<string key="candidateClassName">ChatRoomTableViewController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="transferBackgroundImage">
|
||||
<string key="name">transferBackgroundImage</string>
|
||||
<string key="candidateClassName">UIImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="transferView">
|
||||
<string key="name">transferView</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
<string key="NSFrame">{{0, 44}, {320, 416}}</string>
|
||||
<reference key="NSSuperview" ref="191373211"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor" id="986758619">
|
||||
<int key="NSColorSpace">3</int>
|
||||
|
|
@ -58,7 +57,7 @@
|
|||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIImageView" id="714444944">
|
||||
<reference key="NSNextResponder" ref="350805517"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">290</int>
|
||||
<string key="NSFrameSize">{320, 44}</string>
|
||||
<reference key="NSSuperview" ref="350805517"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@
|
|||
</object>
|
||||
<object class="IBUIView" id="229066993">
|
||||
<reference key="NSNextResponder" ref="715329044"/>
|
||||
<int key="NSvFlags">-2147483356</int>
|
||||
<int key="NSvFlags">-2147483382</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIImageView" id="661332796">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
|
|
@ -160,10 +160,7 @@
|
|||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSNextKeyView" ref="164391443"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA</bytes>
|
||||
</object>
|
||||
<reference key="IBUIBackgroundColor" ref="460939904"/>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSCustomResource" key="IBUIImage" id="172588711">
|
||||
|
|
@ -173,7 +170,7 @@
|
|||
</object>
|
||||
<object class="IBUIButton" id="391057061">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">297</int>
|
||||
<string key="NSFrame">{{250, 0}, {70, 59}}</string>
|
||||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSNextKeyView" ref="833509359"/>
|
||||
|
|
@ -207,7 +204,7 @@
|
|||
</object>
|
||||
<object class="IBUIProgressView" id="164391443">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">298</int>
|
||||
<string key="NSFrame">{{20, 25}, {213, 9}}</string>
|
||||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSNextKeyView" ref="391057061"/>
|
||||
|
|
@ -615,6 +612,14 @@
|
|||
</object>
|
||||
<int key="connectionID">86</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">transferBackgroundImage</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="661332796"/>
|
||||
</object>
|
||||
<int key="connectionID">88</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
|
|
@ -906,7 +911,7 @@
|
|||
<int key="objectID">83</int>
|
||||
<reference key="object" ref="661332796"/>
|
||||
<reference key="parent" ref="229066993"/>
|
||||
<string key="objectName">footerBackgroundImage</string>
|
||||
<string key="objectName">transfertBackgroundImage</string>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
|
|
@ -952,7 +957,7 @@
|
|||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">87</int>
|
||||
<int key="maxID">88</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
|
@ -1023,6 +1028,7 @@
|
|||
<string key="pictureButton">UIButton</string>
|
||||
<string key="sendButton">UIButton</string>
|
||||
<string key="tableController">ChatRoomTableViewController</string>
|
||||
<string key="transferBackgroundImage">UIImageView</string>
|
||||
<string key="transferView">UIView</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
|
|
@ -1090,6 +1096,10 @@
|
|||
<string key="name">tableController</string>
|
||||
<string key="candidateClassName">ChatRoomTableViewController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="transferBackgroundImage">
|
||||
<string key="name">transferBackgroundImage</string>
|
||||
<string key="candidateClassName">UIImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="transferView">
|
||||
<string key="name">transferView</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIImageView" id="714444944">
|
||||
<reference key="NSNextResponder" ref="350805517"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">290</int>
|
||||
<string key="NSFrameSize">{320, 44}</string>
|
||||
<reference key="NSSuperview" ref="350805517"/>
|
||||
<reference key="NSNextKeyView" ref="771824371"/>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -212,17 +212,17 @@
|
|||
<dict>
|
||||
<key>backup</key>
|
||||
<dict>
|
||||
<key>15</key>
|
||||
<key>16</key>
|
||||
<dict>
|
||||
<key>class</key>
|
||||
<string>BLWrapperHandle</string>
|
||||
<key>name</key>
|
||||
<string>Classes/ChatRoomViewController/15/ChatRoomViewController.xib</string>
|
||||
<string>Classes/ChatRoomViewController/16/ChatRoomViewController.xib</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>change date</key>
|
||||
<date>2012-09-14T14:45:49Z</date>
|
||||
<date>2012-09-18T13:03:28Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
|
|
@ -232,7 +232,7 @@
|
|||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>hash</key>
|
||||
<string>1f8683826a86cb2ad7e55cc5c9dcafaf
|
||||
<string>fb9acb898a88e8d219dfd663e9b8eb19
|
||||
</string>
|
||||
<key>name</key>
|
||||
<string>ChatRoomViewController.xib</string>
|
||||
|
|
@ -568,9 +568,9 @@
|
|||
<key>versions</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>15</string>
|
||||
<string>16</string>
|
||||
<key>fr</key>
|
||||
<string>15</string>
|
||||
<string>16</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
|
|
@ -4281,17 +4281,17 @@
|
|||
<dict>
|
||||
<key>backup</key>
|
||||
<dict>
|
||||
<key>3</key>
|
||||
<key>4</key>
|
||||
<dict>
|
||||
<key>class</key>
|
||||
<string>BLWrapperHandle</string>
|
||||
<key>name</key>
|
||||
<string>Classes/ImageViewController/3/ImageViewController.xib</string>
|
||||
<string>Classes/ImageViewController/4/ImageViewController.xib</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>change date</key>
|
||||
<date>2012-09-14T13:00:17Z</date>
|
||||
<date>2012-09-18T12:55:28Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
|
|
@ -4301,7 +4301,7 @@
|
|||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>hash</key>
|
||||
<string>724a8c5069c0fbde9b1e56ef37a42cba
|
||||
<string>cf8736251f03474edd9a8c46b942ae63
|
||||
</string>
|
||||
<key>name</key>
|
||||
<string>ImageViewController.xib</string>
|
||||
|
|
@ -4340,9 +4340,9 @@
|
|||
<key>versions</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>3</string>
|
||||
<string>4</string>
|
||||
<key>fr</key>
|
||||
<string>3</string>
|
||||
<string>4</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
|
|
@ -7354,7 +7354,7 @@
|
|||
</dict>
|
||||
</dict>
|
||||
<key>change date</key>
|
||||
<date>2012-09-14T11:57:58Z</date>
|
||||
<date>2012-09-18T14:20:34Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
|
|
@ -7364,7 +7364,7 @@
|
|||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>hash</key>
|
||||
<string>dcecc0eedf9132813ef8a938d07d7917
|
||||
<string>9801969515d6fafb3f05d8b036f9e80d
|
||||
</string>
|
||||
<key>name</key>
|
||||
<string>Localizable.strings</string>
|
||||
|
|
@ -7898,6 +7898,31 @@ La cause était: %2$@</string>
|
|||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
<string>BLStringKeyObject</string>
|
||||
<key>comment</key>
|
||||
<string>No comment provided by engineer.</string>
|
||||
<key>errors</key>
|
||||
<array/>
|
||||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>key</key>
|
||||
<string>Cannot write image to photo library</string>
|
||||
<key>localizations</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>Cannot write image to photo library</string>
|
||||
<key>fr</key>
|
||||
<string>Impossible d'enregistrer l'image dans l'album photo</string>
|
||||
</dict>
|
||||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
|
|
@ -8373,31 +8398,6 @@ La cause était: %2$@</string>
|
|||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
<string>BLStringKeyObject</string>
|
||||
<key>comment</key>
|
||||
<string>No comment provided by engineer.</string>
|
||||
<key>errors</key>
|
||||
<array/>
|
||||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>key</key>
|
||||
<string>Incoming file stored to your photo library</string>
|
||||
<key>localizations</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>Incoming file stored to your photo library</string>
|
||||
<key>fr</key>
|
||||
<string>Fichier entrant stocké</string>
|
||||
</dict>
|
||||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
|
|
@ -8721,31 +8721,6 @@ La cause était: %2$@</string>
|
|||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
<string>BLStringKeyObject</string>
|
||||
<key>comment</key>
|
||||
<string>No comment provided by engineer.</string>
|
||||
<key>errors</key>
|
||||
<array/>
|
||||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>key</key>
|
||||
<string>Photo library</string>
|
||||
<key>localizations</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>Photo library</string>
|
||||
<key>fr</key>
|
||||
<string>Photos</string>
|
||||
</dict>
|
||||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
|
|
@ -9661,6 +9636,56 @@ Raison: %2$s</string>
|
|||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
<string>BLStringKeyObject</string>
|
||||
<key>comment</key>
|
||||
<string>No comment provided by engineer.</string>
|
||||
<key>errors</key>
|
||||
<array/>
|
||||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>key</key>
|
||||
<string>Incoming file stored to your photo library</string>
|
||||
<key>localizations</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>Incoming file stored to your photo library</string>
|
||||
<key>fr</key>
|
||||
<string>Fichier entrant stocké</string>
|
||||
</dict>
|
||||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>change date</key>
|
||||
<date>2001-01-01T00:00:00Z</date>
|
||||
<key>changed values</key>
|
||||
<array/>
|
||||
<key>class</key>
|
||||
<string>BLStringKeyObject</string>
|
||||
<key>comment</key>
|
||||
<string>No comment provided by engineer.</string>
|
||||
<key>errors</key>
|
||||
<array/>
|
||||
<key>flags</key>
|
||||
<integer>0</integer>
|
||||
<key>key</key>
|
||||
<string>Photo library</string>
|
||||
<key>localizations</key>
|
||||
<dict>
|
||||
<key>en</key>
|
||||
<string>Photo library</string>
|
||||
<key>fr</key>
|
||||
<string>Photos</string>
|
||||
</dict>
|
||||
<key>snapshots</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
</array>
|
||||
<key>plist file</key>
|
||||
<false/>
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@
|
|||
</object>
|
||||
<object class="IBUIView" id="229066993">
|
||||
<reference key="NSNextResponder" ref="715329044"/>
|
||||
<int key="NSvFlags">-2147483356</int>
|
||||
<int key="NSvFlags">-2147483382</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIImageView" id="661332796">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
|
|
@ -166,10 +166,7 @@
|
|||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="164391443"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA</bytes>
|
||||
</object>
|
||||
<reference key="IBUIBackgroundColor" ref="460939904"/>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSCustomResource" key="IBUIImage" id="172588711">
|
||||
|
|
@ -179,7 +176,7 @@
|
|||
</object>
|
||||
<object class="IBUIButton" id="391057061">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">297</int>
|
||||
<string key="NSFrame">{{250, 0}, {70, 59}}</string>
|
||||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
@ -214,7 +211,7 @@
|
|||
</object>
|
||||
<object class="IBUIProgressView" id="164391443">
|
||||
<reference key="NSNextResponder" ref="229066993"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">298</int>
|
||||
<string key="NSFrame">{{20, 25}, {213, 9}}</string>
|
||||
<reference key="NSSuperview" ref="229066993"/>
|
||||
<reference key="NSWindow"/>
|
||||
|
|
@ -274,6 +271,7 @@
|
|||
<string key="NSFrame">{{250, 0}, {70, 59}}</string>
|
||||
<reference key="NSSuperview" ref="833509359"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
|
||||
|
|
@ -639,6 +637,14 @@
|
|||
</object>
|
||||
<int key="connectionID">86</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">transferBackgroundImage</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="661332796"/>
|
||||
</object>
|
||||
<int key="connectionID">88</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
|
|
@ -930,7 +936,7 @@
|
|||
<int key="objectID">83</int>
|
||||
<reference key="object" ref="661332796"/>
|
||||
<reference key="parent" ref="229066993"/>
|
||||
<string key="objectName">footerBackgroundImage</string>
|
||||
<string key="objectName">transfertBackgroundImage</string>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
|
|
@ -976,7 +982,7 @@
|
|||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">87</int>
|
||||
<int key="maxID">88</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
|
@ -1047,6 +1053,7 @@
|
|||
<string key="pictureButton">UIButton</string>
|
||||
<string key="sendButton">UIButton</string>
|
||||
<string key="tableController">ChatRoomTableViewController</string>
|
||||
<string key="transferBackgroundImage">UIImageView</string>
|
||||
<string key="transferView">UIView</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
|
|
@ -1114,6 +1121,10 @@
|
|||
<string key="name">tableController</string>
|
||||
<string key="candidateClassName">ChatRoomTableViewController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="transferBackgroundImage">
|
||||
<string key="name">transferBackgroundImage</string>
|
||||
<string key="candidateClassName">UIImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="transferView">
|
||||
<string key="name">transferView</string>
|
||||
<string key="candidateClassName">UIView</string>
|
||||
|
|
@ -42,7 +42,6 @@
|
|||
<string key="NSFrame">{{0, 44}, {320, 416}}</string>
|
||||
<reference key="NSSuperview" ref="191373211"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor" id="986758619">
|
||||
<int key="NSColorSpace">3</int>
|
||||
|
|
@ -58,7 +57,7 @@
|
|||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="IBUIImageView" id="714444944">
|
||||
<reference key="NSNextResponder" ref="350805517"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<int key="NSvFlags">290</int>
|
||||
<string key="NSFrameSize">{320, 44}</string>
|
||||
<reference key="NSSuperview" ref="350805517"/>
|
||||
<reference key="NSWindow"/>
|
||||
Binary file not shown.
Loading…
Add table
Reference in a new issue