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
@@ -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 000000000..c8271408e
Binary files /dev/null and b/Resources/bj_save.png differ
diff --git a/Resources/snapshot.png b/Resources/snapshot.png
new file mode 100644
index 000000000..8151dd3e8
Binary files /dev/null and b/Resources/snapshot.png differ
diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
index 8bb172103..a434b9690 100755
--- a/linphone.xcodeproj/project.pbxproj
+++ b/linphone.xcodeproj/project.pbxproj
@@ -159,6 +159,10 @@
D376EAF116008454007C8226 /* ringtone_05_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE716008454007C8226 /* ringtone_05_1600.wav */; };
D376EAF416008DF1007C8226 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = D376EAF316008DF1007C8226 /* User.m */; };
D376EAF516008DF1007C8226 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = D376EAF316008DF1007C8226 /* User.m */; };
+ D376EAF816009E2A007C8226 /* bj_save.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAF616009E2A007C8226 /* bj_save.png */; };
+ D376EAF916009E2A007C8226 /* bj_save.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAF616009E2A007C8226 /* bj_save.png */; };
+ D376EAFA16009E2A007C8226 /* snapshot.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAF716009E2A007C8226 /* snapshot.png */; };
+ D376EAFB16009E2A007C8226 /* snapshot.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAF716009E2A007C8226 /* snapshot.png */; };
D37CD2DF15E21CB30028869A /* bj_barcode.png in Resources */ = {isa = PBXBuildFile; fileRef = D37CD2C615E21CB30028869A /* bj_barcode.png */; };
D37CD2E015E21CB30028869A /* bj_barcode.png in Resources */ = {isa = PBXBuildFile; fileRef = D37CD2C615E21CB30028869A /* bj_barcode.png */; };
D37CD2E115E21CB30028869A /* bj_decline.png in Resources */ = {isa = PBXBuildFile; fileRef = D37CD2C715E21CB30028869A /* bj_decline.png */; };
@@ -593,6 +597,8 @@
D376EAE716008454007C8226 /* ringtone_05_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_05_1600.wav; path = Resources/ringtone_05_1600.wav; sourceTree = ""; };
D376EAF216008DF1007C8226 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = User.h; path = Model/User.h; sourceTree = ""; };
D376EAF316008DF1007C8226 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = User.m; path = Model/User.m; sourceTree = ""; };
+ D376EAF616009E2A007C8226 /* bj_save.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_save.png; path = Resources/bj_save.png; sourceTree = ""; };
+ D376EAF716009E2A007C8226 /* snapshot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = snapshot.png; path = Resources/snapshot.png; sourceTree = ""; };
D37CD2C615E21CB30028869A /* bj_barcode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_barcode.png; path = Resources/bj_barcode.png; sourceTree = ""; };
D37CD2C715E21CB30028869A /* bj_decline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_decline.png; path = Resources/bj_decline.png; sourceTree = ""; };
D37CD2C815E21CB30028869A /* bj_door_hl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_door_hl.png; path = Resources/bj_door_hl.png; sourceTree = ""; };
@@ -1268,6 +1274,7 @@
D37CD2CB15E21CB30028869A /* bj_light_hl.png */,
D37CD2CD15E21CB30028869A /* bj_mute_off.png */,
D37CD2CE15E21CB30028869A /* bj_mute_on.png */,
+ D376EAF616009E2A007C8226 /* bj_save.png */,
D37CD2CF15E21CB30028869A /* bj_settings.png */,
D37CD2D015E21CB30028869A /* bj_start_call.png */,
D384466E15E64B9E00DF89DF /* bj_station.png */,
@@ -1287,6 +1294,7 @@
D376EAE616008454007C8226 /* ringtone_04_1600.wav */,
D376EAE716008454007C8226 /* ringtone_05_1600.wav */,
D33BEE1E15FF711B004ED2AF /* rootca.pem */,
+ D376EAF716009E2A007C8226 /* snapshot.png */,
D376EAE0160082A4007C8226 /* trash.png */,
);
name = Resources;
@@ -1538,6 +1546,8 @@
D376EAEC16008454007C8226 /* ringtone_03_1600.wav in Resources */,
D376EAEE16008454007C8226 /* ringtone_04_1600.wav in Resources */,
D376EAF016008454007C8226 /* ringtone_05_1600.wav in Resources */,
+ D376EAF816009E2A007C8226 /* bj_save.png in Resources */,
+ D376EAFA16009E2A007C8226 /* snapshot.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1590,6 +1600,8 @@
D376EAED16008454007C8226 /* ringtone_03_1600.wav in Resources */,
D376EAEF16008454007C8226 /* ringtone_04_1600.wav in Resources */,
D376EAF116008454007C8226 /* ringtone_05_1600.wav in Resources */,
+ D376EAF916009E2A007C8226 /* bj_save.png in Resources */,
+ D376EAFB16009E2A007C8226 /* snapshot.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};