From c8bb87b76122b4cbb37f2c71d8fba3c5d5d6e5ca Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 12 Sep 2012 14:34:26 +0200 Subject: [PATCH] Add snapshot + save button --- Classes/BuschJaegerCallView.h | 2 + Classes/BuschJaegerCallView.m | 40 +++-- Classes/BuschJaegerCallView.xib | 114 ++++++++++---- Classes/BuschJaegerHistoryDetailsView.h | 4 + Classes/BuschJaegerHistoryDetailsView.m | 14 +- Classes/BuschJaegerHistoryDetailsView.xib | 179 ++++++++++++++++------ Classes/LinphoneManager.m | 2 + Resources/bj_save.png | Bin 0 -> 1182 bytes Resources/snapshot.png | Bin 0 -> 1093 bytes linphone.xcodeproj/project.pbxproj | 12 ++ 10 files changed, 274 insertions(+), 93 deletions(-) create mode 100644 Resources/bj_save.png create mode 100644 Resources/snapshot.png diff --git a/Classes/BuschJaegerCallView.h b/Classes/BuschJaegerCallView.h index be6f94d7f..dced2f831 100644 --- a/Classes/BuschJaegerCallView.h +++ b/Classes/BuschJaegerCallView.h @@ -42,7 +42,9 @@ @property (nonatomic, retain) IBOutlet UIToggleButton* microButton; @property (nonatomic, retain) IBOutlet UIDigitButton* lightsButton; @property (nonatomic, retain) IBOutlet UIDigitButton* openDoorButton; +@property (nonatomic, retain) IBOutlet UIButton* snapshotButton; - (IBAction)takeCall:(id)sender; +- (IBAction)onSnapshotClick:(id)sender; @end diff --git a/Classes/BuschJaegerCallView.m b/Classes/BuschJaegerCallView.m index fda296e72..d6c975e40 100644 --- a/Classes/BuschJaegerCallView.m +++ b/Classes/BuschJaegerCallView.m @@ -34,11 +34,7 @@ @synthesize microButton; @synthesize lightsButton; @synthesize openDoorButton; - - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} +@synthesize snapshotButton; #pragma mark - View lifecycle @@ -51,6 +47,7 @@ [microButton release]; [lightsButton release]; [openDoorButton release]; + [snapshotButton release]; // Remove all observer [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -58,11 +55,6 @@ [super dealloc]; } -// 59x47 -// 54 -// 54 -> 67 -// 59 -> 73 x 58 -// 257 - (void)viewDidLoad { [super viewDidLoad]; @@ -90,8 +82,8 @@ [BuschJaegerUtils createGradientForView:takeCallButton withTopColor:col1 bottomColor:col2]; } - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); + linphone_core_set_native_video_window_id([LinphoneManager getLc], (unsigned long)videoView); + linphone_core_set_native_preview_window_id([LinphoneManager getLc], 0); videoZoomHandler = [[VideoZoomHandler alloc] init]; [videoZoomHandler setup:videoView]; @@ -227,7 +219,7 @@ [declineButton setHidden:NO]; [endOrRejectCallButton setHidden:YES]; [videoView setHidden:NO]; - + [snapshotButton setHidden:YES]; NSString *contactName = NSLocalizedString(@"Unknown", nil); @@ -259,6 +251,7 @@ [declineButton setHidden:YES]; [endOrRejectCallButton setHidden:NO]; [videoView setHidden:NO]; + [snapshotButton setHidden:YES]; } - (void)displayVideoCall { @@ -268,8 +261,18 @@ [declineButton setHidden:YES]; [endOrRejectCallButton setHidden:NO]; [videoView setHidden:NO]; + [snapshotButton setHidden:NO]; } +- (void)saveImage:(NSString*)imagePath { + UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; + if(image != nil) { + UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); + } +} + +#pragma mark - Actions Functions + - (IBAction)takeCall:(id)sender { const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); @@ -283,4 +286,15 @@ } } +- (IBAction)onSnapshotClick:(id)sender { + LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); + if(call != NULL) { + NSString *imagePath = [NSTemporaryDirectory() stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"jpg"]]; + int ret = linphone_call_take_video_snapshot(call, [imagePath UTF8String]); + if(ret == 0) { + [self performSelector:@selector(saveImage:) withObject:imagePath afterDelay:0.5]; + } + } +} + @end diff --git a/Classes/BuschJaegerCallView.xib b/Classes/BuschJaegerCallView.xib index f9803d52d..4748ede46 100644 --- a/Classes/BuschJaegerCallView.xib +++ b/Classes/BuschJaegerCallView.xib @@ -50,6 +50,44 @@ IBCocoaTouchFramework + + + 292 + {{266, 20}, {34, 34}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + snapshot.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + 292 @@ -70,27 +108,14 @@ IBCocoaTouchFramework 0 0 - - 3 - MQA - - - 3 - MC41AA - + + NSImage bj_start_call.png - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - + + @@ -112,7 +137,7 @@ bj_end_call.png - + @@ -139,7 +164,7 @@ bj_mute_on.png - + @@ -147,6 +172,7 @@ {{207, 0}, {73, 58}} + _NS:225 NO @@ -161,7 +187,7 @@ bj_decline.png - + @@ -188,7 +214,7 @@ bj_door.png - + @@ -220,13 +246,13 @@ bj_light.png - + {{20, 399}, {280, 58}} - + _NS:196 IBCocoaTouchFramework @@ -241,7 +267,7 @@ {320, 42} - + _NS:9 NO YES @@ -374,6 +400,14 @@ 88 + + + snapshotButton + + + + 90 + takeCall: @@ -383,6 +417,15 @@ 68 + + + onSnapshotClick: + + + 7 + + 91 + @@ -410,6 +453,7 @@ + @@ -475,6 +519,7 @@ 4 + VideoView @@ -484,6 +529,12 @@ contactLabel + + 89 + + + Snapshot Button + @@ -514,6 +565,7 @@ IBBuiltInLabel-Red com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -523,7 +575,7 @@ - 88 + 91 @@ -531,12 +583,12 @@ BuschJaegerCallView UIViewController - id + id id - - startCall: + + onSnapshotClick: id @@ -552,6 +604,7 @@ UIDigitButton UIToggleButton UIDigitButton + UIButton UIButton UIView @@ -584,6 +637,10 @@ openDoorButton UIDigitButton + + snapshotButton + UIButton + takeCallButton UIButton @@ -670,6 +727,7 @@ {160, 98} {160, 98} {16, 16} + {44, 34} 1498 diff --git a/Classes/BuschJaegerHistoryDetailsView.h b/Classes/BuschJaegerHistoryDetailsView.h index 4be669b75..9acb94c43 100644 --- a/Classes/BuschJaegerHistoryDetailsView.h +++ b/Classes/BuschJaegerHistoryDetailsView.h @@ -33,6 +33,9 @@ @property (nonatomic, retain) IBOutlet UITableViewController *tableController; @property (nonatomic, retain) IBOutlet UILabel *stationLabel; @property (nonatomic, retain) IBOutlet UILabel *dateLabel; + +@property (nonatomic, retain) IBOutlet UIView *fullscreenView; +@property (nonatomic, retain) IBOutlet UIButton *saveButton; @property (nonatomic, retain) IBOutlet UIRemoteImageView *imageView; - (IBAction)onBackClick:(id)sender; @@ -40,5 +43,6 @@ - (IBAction)nextImage:(id)sender; - (IBAction)previousImage:(id)sender; - (IBAction)hideImage:(id)sender; +- (IBAction)saveImage:(id)sender; @end diff --git a/Classes/BuschJaegerHistoryDetailsView.m b/Classes/BuschJaegerHistoryDetailsView.m index 115df8f00..959136f92 100644 --- a/Classes/BuschJaegerHistoryDetailsView.m +++ b/Classes/BuschJaegerHistoryDetailsView.m @@ -31,6 +31,8 @@ @synthesize stationLabel; @synthesize dateLabel; @synthesize imageView; +@synthesize saveButton; +@synthesize fullscreenView; #pragma mark - Lifecycle Functions @@ -72,8 +74,9 @@ [backButton release]; [stationLabel release]; [dateLabel release]; - + [fullscreenView release]; [imageView release]; + [saveButton release]; [dateFormatter release]; @@ -98,7 +101,7 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [imageView setHidden:TRUE]; + [fullscreenView setHidden:TRUE]; } @@ -157,9 +160,12 @@ } - (IBAction)hideImage:(id)sender { - [imageView setHidden:TRUE]; + [fullscreenView setHidden:TRUE]; } +- (IBAction)saveImage:(id)sender { + UIImageWriteToSavedPhotosAlbum([imageView image], nil, nil, nil); +} #pragma mark - UITableViewDataSource Functions @@ -195,7 +201,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; currentIndex = [indexPath row]; - [imageView setHidden:FALSE]; + [fullscreenView setHidden:FALSE]; [imageView setImage:nil]; [imageView loadImage:[[LinphoneManager instance].configuration getImageUrl:BuschJaegerConfigurationRequestType_Local image:[history.images objectAtIndex:currentIndex]]]; } diff --git a/Classes/BuschJaegerHistoryDetailsView.xib b/Classes/BuschJaegerHistoryDetailsView.xib index ddca9a114..1c13c6f59 100644 --- a/Classes/BuschJaegerHistoryDetailsView.xib +++ b/Classes/BuschJaegerHistoryDetailsView.xib @@ -1,7 +1,7 @@ - 1296 + 1280 11E53 2549 1138.47 @@ -98,7 +98,7 @@ {{168, 5}, {112, 21}} - + _NS:9 NO YES @@ -120,7 +120,7 @@ 16 - + 257 {{286, 0}, {34, 34}} @@ -137,7 +137,7 @@ 6 6 6 - + 3 MC41AA @@ -145,11 +145,11 @@ NSImage trash.png - + 2 15 - + Helvetica-Bold 15 16 @@ -194,7 +194,6 @@ {280, 40} - _NS:9 3 @@ -206,9 +205,9 @@ 0 - - - + + + {{20, 410}, {280, 40}} @@ -219,28 +218,72 @@ IBCocoaTouchFramework - + 292 + + + + 292 + {320, 460} + + + + _NS:9 + + 3 + MAA + + 1 + YES + + IBCocoaTouchFramework + + + + 292 + {{266, 406}, {34, 34}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + bj_save.png + + + + + {320, 460} - + _NS:9 - + 3 - MAA + MQA + + 2 + - 1 - YES - IBCocoaTouchFramework {{0, 20}, {320, 460}} - + IBCocoaTouchFramework @@ -310,6 +353,14 @@ 32 + + + fullscreenView + + + + 39 + view @@ -343,6 +394,16 @@ 16 + + + gestureRecognizers + + + NSArray + NO + + 31 + gestureRecognizers @@ -363,16 +424,6 @@ 30 - - - gestureRecognizers - - - NSArray - NO - - 31 - hideImage: @@ -400,12 +451,21 @@ onDeleteClick: - + 7 37 + + + saveImage: + + + 7 + + 41 + @@ -423,8 +483,8 @@ - - + + @@ -482,12 +542,6 @@ - - 21 - - - - 23 @@ -507,9 +561,30 @@ 36 - + - deleteButton + Delete Button + + + 38 + + + + + + + Fullscreen View + + + 21 + + + + + 40 + + + Save Button @@ -531,7 +606,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -540,7 +617,7 @@ - 37 + 41 @@ -553,6 +630,7 @@ id id id + id @@ -575,10 +653,15 @@ previousImage: id + + saveImage: + id + UIView UILabel + UIView UIRemoteImageView UILabel UITableViewController @@ -592,6 +675,10 @@ dateLabel UILabel + + fullscreenView + UIView + imageView UIRemoteImageView @@ -622,16 +709,12 @@ 0 IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - YES 3 - - trash.png - {26, 26} - + + {34, 35} + {26, 26} + 1498 diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index f26b18bdf..1e2814205 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -217,7 +217,9 @@ struct codec_name_pref_table codec_pref_table[]={ logs = [[NSMutableArray alloc] init]; database = NULL; speakerEnabled = FALSE; + /* MODIFICATION: Disable database */ [self openDatabase]; + /**/ [self copyDefaultSettings]; /* MODIFICATION: Add buschjaeger configuration */ diff --git a/Resources/bj_save.png b/Resources/bj_save.png new file mode 100644 index 0000000000000000000000000000000000000000..c8271408ec8125dd7dde383e5b249251729fe2a3 GIT binary patch literal 1182 zcmV;P1Y!G$P)<)Fda)IdCZ-0Qd&EKo5L_ zimFnN5yyxV5{guT6a^(BDiT3yLee<4cV^c!!-2Qe(%9`LF+%D{PoACK{m*~?^X9#` zRw0DI|In0Ds(c*_kH^lrpF;==Kx_S;QmQqI3BC8fd+#3>*Cp(6zymqpaLxs5?GL~V za22@LZnuAQ&V^Cf=H}*Y;7ze7*fQ4)FagA|_ns`vG;j%M0=n1h)f$b)NVZ^md;0=# z4ak7Jg#9Yek;nRR2m$9@BqYWG=e<{>a-GA&!zOS6Xah$f1O$7$cm#-I?>){r1!%wl zM_TK?_kJWqvMfu01n2|p61I~$H4w!mhJA6I$4QdpBRot&a67<$3A+aF=l3CW8?Df?(W4jO`9Qv=rlyu*VlKdZ2LeWb8~aQ z0KWlmNOC#{#HWq&5+rlUW7W4t!fpl}0e=ZlbV?$*B)krgJLh<+CK|4Ygya<10}N0* z0}&?}M}Q3>grSNIA(F{&M@XnMB)tMJA9e_aDH0?p6{{Il77pI~!CN!PM^;u=KAf7G z`hG+NKAN4KT`3*kP+5^;EQIh-?8Muml)4f{(d*mW+YO*mDD1sg0~N{h9PjS+-MDk-&eHz=eoa7%W1C4(+5;X{u_Q@))>=XceZkN`G>k|L_@$+#2Rl1EpWVE9 z^V?>#`AMx-dn?N_vMf_YtqJUlWmSBnUaxnvEF(!0BN#!ddbHNZom)!%3Ee(^fN+w?T2fY( wlHQ>5paZ1p8LQDEX>^8K(i2NrRSj*cpo%7XIR&d$!>-d>Q! z#l^%0{m{@*YildO%*+gIM@Prp+#JNfX3hHgI$;R8y1EKrxy(vSl7y_Styz);Tk0(_ z@tV&%5D1=#0rYykITgtNlUT-@6Y6w2@ZH_rmR^E!$C8qg(9lp=bcv8tQ&WL~fxrrd zVsLP9dwU!0s;%8`&cwvT`1rWDw|9SkzgZ7{c6Jtaa&i*3udfewU|;}w0HjhWY+PJi zdwV+sU0q#pfgx*bYz&~Stqs-ULElK(_-pg?^8$fDE|(LA$KyeXBr=&yC=~vSrznK9 zw6v_OtcXM+q9j(M(JU=3X|-Cig&xy_vLzA;E`=nx3yy#WF4D}+%}s;Bu(7d$SX>z+ zgdxFfEG{lWMg|E(rBoI3cryqMY6LUn{Dvo&nOnG%+RCe!=08RfzTR zE6RMtxFoWp($C8^;)~phR0jJGbAjfZO&{h;f>LvW_>349TUnvBa&%_czLzS6#zcU%zw0ADK4uy&Bo~tBq&; zszx49cNwbXZ*`tJx1P#@4E^wzx