Add ringtone settings

Add history remove
This commit is contained in:
Yann Diorcet 2012-09-12 11:25:36 +02:00
parent 1404a84d4a
commit 41a1c16d33
24 changed files with 465 additions and 66 deletions

View file

@ -49,9 +49,12 @@ typedef enum _BuschJaegerConfigurationRequestType{
- (BOOL)parseQRCode:(NSString*)data delegate:(id<BuschJaegerConfigurationDelegate>)delegate;
- (BOOL)loadHistory:(BuschJaegerConfigurationRequestType)type delegate:(id<BuschJaegerConfigurationDelegate>)delegate;
- (BOOL)removeHistory:(BuschJaegerConfigurationRequestType)type history:(History*)history delegate:(id<BuschJaegerConfigurationDelegate>)delegate;
- (NSString*)getImageUrl:(BuschJaegerConfigurationRequestType)type image:(NSString *)image;
- (NSString*)getGateway:(BuschJaegerConfigurationRequestType)type;
+ (NSString*)getRegexValue:(NSString*)regexString data:(NSString*)data;
@end

View file

@ -241,13 +241,20 @@
[delegate buschJaegerConfigurationError:[error localizedDescription]];
});
} else {
if([self parseConfig:[NSString stringWithUTF8String:[data bytes]] delegate:delegate]) {
[[NSUserDefaults standardUserDefaults] setObject:userString forKey:@"username_preference"];
[[NSUserDefaults standardUserDefaults] setObject:network.domain forKey:@"domain_preference"];
[[NSUserDefaults standardUserDefaults] setObject:passwordString forKey:@"password_preference"];
[[LinphoneManager instance] reconfigureLinphone];
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse*) response;
if(urlResponse.statusCode == 200) {
if([self parseConfig:[NSString stringWithUTF8String:[data bytes]] delegate:delegate]) {
[[NSUserDefaults standardUserDefaults] setObject:userString forKey:@"username_preference"];
[[NSUserDefaults standardUserDefaults] setObject:network.domain forKey:@"domain_preference"];
[[NSUserDefaults standardUserDefaults] setObject:passwordString forKey:@"password_preference"];
[[LinphoneManager instance] reconfigureLinphone];
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationSuccess];
});
}
} else {
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationSuccess];
[delegate buschJaegerConfigurationError:[NSString stringWithFormat:@"Request not succeed (Status code:%d)", urlResponse.statusCode]];
});
}
}
@ -273,13 +280,51 @@
[delegate buschJaegerConfigurationError:[error localizedDescription]];
});
} else {
NSString *dataString = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding: NSUTF8StringEncoding];
if([self parseHistory:dataString delegate:delegate]) {
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse*) response;
if(urlResponse.statusCode == 200) {
NSString *dataString = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding: NSUTF8StringEncoding];
if([self parseHistory:dataString delegate:delegate]) {
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationSuccess];
});
}
[dataString release];
} else {
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationError:[NSString stringWithFormat:@"Request not succeed (Status code:%d)", urlResponse.statusCode]];
});
}
}
});
return TRUE;
}
return FALSE;
}
- (BOOL)removeHistory:(BuschJaegerConfigurationRequestType)type history:(History*)ahistory delegate:(id<BuschJaegerConfigurationDelegate>)delegate {
NSString *url = [NSString stringWithFormat:@"%@/adduser.cgi?type=delhistory&id=%d", [self getGateway:type], ahistory.ID];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5];
if(request != nil) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = nil;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(data == nil) {
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationError:[error localizedDescription]];
});
} else {
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse*) response;
if(urlResponse.statusCode == 200) {
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationSuccess];
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
[delegate buschJaegerConfigurationError:[NSString stringWithFormat:@"Request not succeed (Status code:%d)", urlResponse.statusCode]];
});
}
[dataString release];
}
});
return TRUE;

View file

@ -20,8 +20,9 @@
#import <UIKit/UIKit.h>
#import "History.h"
#import "UIRemoteImageView.h"
#import "BuschJaegerConfiguration.h"
@interface BuschJaegerHistoryDetailsView : UIViewController<UITableViewDataSource, UITableViewDelegate> {
@interface BuschJaegerHistoryDetailsView : UIViewController<UITableViewDataSource, UITableViewDelegate, BuschJaegerConfigurationDelegate> {
@private
int currentIndex;
NSDateFormatter *dateFormatter;
@ -34,6 +35,8 @@
@property (nonatomic, retain) IBOutlet UILabel *dateLabel;
@property (nonatomic, retain) IBOutlet UIRemoteImageView *imageView;
- (IBAction)onBackClick:(id)sender;
- (IBAction)onDeleteClick:(id)sender;
- (IBAction)nextImage:(id)sender;
- (IBAction)previousImage:(id)sender;
- (IBAction)hideImage:(id)sender;

View file

@ -137,6 +137,10 @@
[[BuschJaegerMainView instance].navigationController popViewControllerAnimated:FALSE];
}
- (IBAction)onDeleteClick:(id)sender {
[[LinphoneManager instance].configuration removeHistory:BuschJaegerConfigurationRequestType_Local history:history delegate:self];
}
- (IBAction)nextImage:(id)sender {
if([history.images count]) {
currentIndex = (currentIndex - 1);
@ -196,4 +200,22 @@
[imageView loadImage:[[LinphoneManager instance].configuration getImageUrl:BuschJaegerConfigurationRequestType_Local image:[history.images objectAtIndex:currentIndex]]];
}
#pragma mark - BuschJaegerConfigurationDelegate Functions
- (void)buschJaegerConfigurationSuccess {
[[BuschJaegerMainView instance].historyView reload];
[[BuschJaegerMainView instance].navigationController popViewControllerAnimated:FALSE];
}
- (void)buschJaegerConfigurationError:(NSString *)error {
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"History delete error",nil)
message:[NSString stringWithFormat:NSLocalizedString(@"Connection issue: %@", nil), error]
delegate:nil
cancelButtonTitle:NSLocalizedString(@"Continue",nil)
otherButtonTitles:nil,nil];
[errorView show];
[errorView release];
}
@end

View file

@ -67,7 +67,7 @@
<object class="IBUILabel" id="33010100">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{5, 5}, {180, 21}}</string>
<string key="NSFrame">{{5, 5}, {152, 21}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="251393705"/>
@ -95,10 +95,10 @@
<object class="IBUILabel" id="251393705">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{203, 5}, {112, 21}}</string>
<string key="NSFrame">{{168, 5}, {112, 21}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="420803874"/>
<reference key="NSNextKeyView" ref="252379384"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
@ -120,6 +120,41 @@
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIButton" id="252379384">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">257</int>
<string key="NSFrame">{{286, 0}, {34, 34}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="420803874"/>
<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>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<double key="IBUIImageEdgeInsets.top">6</double>
<double key="IBUIImageEdgeInsets.bottom">6</double>
<double key="IBUIImageEdgeInsets.left">6</double>
<double key="IBUIImageEdgeInsets.right">6</double>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="1019592571">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUINormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">trash.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription" id="1060063880">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont" id="364688920">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIView" id="794939656">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
@ -159,6 +194,7 @@
<string key="NSFrameSize">{280, 40}</string>
<reference key="NSSuperview" ref="794939656"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor" id="372315597">
<int key="NSColorSpace">3</int>
@ -170,19 +206,9 @@
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="541094472"/>
<reference key="IBUINormalTitleColor" ref="541094472"/>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</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="IBUINormalTitleShadowColor" ref="1019592571"/>
<reference key="IBUIFontDescription" ref="1060063880"/>
<reference key="IBUIFont" ref="364688920"/>
</object>
</array>
<string key="NSFrame">{{20, 410}, {280, 40}}</string>
@ -371,6 +397,15 @@
</object>
<int key="connectionID">35</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onDeleteClick:</string>
<reference key="source" ref="252379384"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">37</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -389,6 +424,7 @@
<reference ref="420803874"/>
<reference ref="33010100"/>
<reference ref="322407382"/>
<reference ref="252379384"/>
</array>
<reference key="parent" ref="0"/>
</object>
@ -469,6 +505,12 @@
<reference key="parent" ref="0"/>
<string key="objectName">Left Swipe Gesture Recognizer</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">36</int>
<reference key="object" ref="252379384"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">deleteButton</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -486,6 +528,9 @@
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="2" key="36.IBUIButtonInspectorSelectedEdgeInsetMetadataKey"/>
<real value="0.0" key="36.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -495,7 +540,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">35</int>
<int key="maxID">37</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -506,6 +551,7 @@
<string key="hideImage:">id</string>
<string key="nextImage:">id</string>
<string key="onBackClick:">id</string>
<string key="onDeleteClick:">id</string>
<string key="previousImage:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
@ -521,6 +567,10 @@
<string key="name">onBackClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="onDeleteClick:">
<string key="name">onDeleteClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="previousImage:">
<string key="name">previousImage:</string>
<string key="candidateClassName">id</string>
@ -578,6 +628,10 @@
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NS.key.0">trash.png</string>
<string key="NS.object.0">{26, 26}</string>
</object>
<string key="IBCocoaTouchPluginVersion">1498</string>
</data>
</archive>

View file

@ -18,9 +18,14 @@
*/
#import <UIKit/UIKit.h>
#import "BuschJaegerConfiguration.h"
@interface BuschJaegerHistoryTableViewController : UITableViewController
@interface BuschJaegerHistoryTableViewController : UITableViewController<BuschJaegerConfigurationDelegate> {
@private
NSMutableArray *history;
}
@property (nonatomic, retain) NSArray *history;
@property (nonatomic, copy) NSArray *history;
@property (nonatomic, retain) IBOutlet UIView *waitView;
@end

View file

@ -26,12 +26,14 @@
@implementation BuschJaegerHistoryTableViewController
@synthesize history;
@synthesize waitView;
#pragma mark - Lifecycle Functions
- (void)dealloc {
[history release];
[waitView release];
[super dealloc];
}
@ -44,11 +46,12 @@
}
[history release];
history = [ahistory retain];
history = [[NSMutableArray alloc] initWithArray:ahistory];
[self.tableView reloadData];
}
#pragma mark - UITableViewDataSource Functions
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
@ -86,5 +89,36 @@
[[BuschJaegerMainView instance].navigationController pushViewController:[BuschJaegerMainView instance].historyDetailsView animated:FALSE];
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if(editingStyle == UITableViewCellEditingStyleDelete) {
History *ahistory = [history objectAtIndex:[indexPath row]];
[[LinphoneManager instance].configuration removeHistory:BuschJaegerConfigurationRequestType_Local history:ahistory delegate:self];
[tableView beginUpdates];
[history removeObjectAtIndex:[indexPath row]];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
}
}
#pragma mark - BuschJaegerConfigurationDelegate Functions
- (void)buschJaegerConfigurationSuccess {
}
- (void)buschJaegerConfigurationError:(NSString *)error {
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"History delete error",nil)
message:[NSString stringWithFormat:NSLocalizedString(@"Connection issue: %@", nil), error]
delegate:nil
cancelButtonTitle:NSLocalizedString(@"Continue",nil)
otherButtonTitles:nil,nil];
[errorView show];
[errorView release];
[[BuschJaegerMainView instance].historyView reload];
}
@end

View file

@ -79,7 +79,8 @@
- (void)update {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[tableController setHistory:[[LinphoneManager instance].configuration.history sortedArrayUsingDescriptors:sortDescriptors]];
}

View file

@ -253,6 +253,14 @@
</object>
<int key="connectionID">17</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">waitView</string>
<reference key="source" ref="522149295"/>
<reference key="destination" ref="664811608"/>
</object>
<int key="connectionID">25</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -351,13 +359,24 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">24</int>
<int key="maxID">25</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">BuschJaegerHistoryTableViewController</string>
<string key="superclassName">UITableViewController</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">waitView</string>
<string key="NS.object.0">UIView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">waitView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">waitView</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/BuschJaegerHistoryTableViewController.h</string>

View file

@ -162,8 +162,7 @@ static BuschJaegerMainView* mainViewInstance=nil;
&& [UIApplication sharedApplication].applicationState != UIApplicationStateActive) {
// Create a new notification
UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease];
if (notif)
{
if (notif) {
notif.repeatInterval = 0;
notif.alertBody = NSLocalizedString(@"Ding Dong !",nil);
notif.alertAction = @"See the answer";

View file

@ -77,7 +77,7 @@
- (void)updateConfiguration:(BuschJaegerConfiguration *)configuration {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ID" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[tableController setStations:[configuration.outdoorStations sortedArrayUsingDescriptors:sortDescriptors]];
[historyButton setEnabled: configuration.network.localAddress != nil];
}

View file

@ -70,6 +70,9 @@ typedef struct _LinphoneCallAppData {
typedef struct _LinphoneManagerSounds {
SystemSoundID call;
/* MODIFICATION add level ringtone */
SystemSoundID level;
/**/
SystemSoundID message;
} LinphoneManagerSounds;

View file

@ -192,23 +192,27 @@ struct codec_name_pref_table codec_pref_table[]={
}
// Sounds
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"01" ofType:@"wav"];
/*{
NSString *path = [[NSBundle mainBundle] pathForResource:@"01" ofType:@"wav"];*/
sounds.call = 0;
OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.call);
/*OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.call);
if(status != 0){
[LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"call\" system sound"];
}
}
/*{
NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"];
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"];*/
sounds.message = 0;
OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.message);
/*OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.message);
if(status != 0){
[LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"message\" system sound"];
}
}*/
/* MODIFICATION add level ringtone */
sounds.level = 0;
/**/
inhibitedEvent = [[NSMutableArray alloc] init];
logs = [[NSMutableArray alloc] init];
database = NULL;
@ -1175,13 +1179,9 @@ static void audioRouteChangeListenerCallback (
}
// Set audio assets
const char* lRing = [[myBundle pathForResource:@"01"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
linphone_core_set_ring(theLinphoneCore, lRing );
const char* lRingBack = [[myBundle pathForResource:@"01"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
linphone_core_set_ringback(theLinphoneCore, lRingBack);
linphone_core_set_ring(theLinphoneCore, "");
linphone_core_set_ringback(theLinphoneCore, "");
//configure sip account
@ -1339,6 +1339,38 @@ static void audioRouteChangeListenerCallback (
currentSettings = newSettings;
[currentSettings retain];
/* Configure sounds */
if(sounds.call) {
AudioServicesDisposeSystemSoundID(sounds.call);
}
{
NSString *ringtone = [[NSUserDefaults standardUserDefaults] stringForKey:@"ringtone_preference"];
if(ringtone == nil) {
ringtone = @"ringtone_01_1600";
}
NSString *path = [[NSBundle mainBundle] pathForResource:ringtone ofType:@"wav"];
sounds.call = 0;
OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.call);
if(status != 0) {
[LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"call\" system sound"];
}
}
if(sounds.level) {
AudioServicesDisposeSystemSoundID(sounds.level);
}
{
NSString *ringtone = [[NSUserDefaults standardUserDefaults] stringForKey:@"level_ringtone_preference"];
if(ringtone == nil) {
ringtone = @"ringtone_01_1600";
}
NSString *path = [[NSBundle mainBundle] pathForResource:ringtone ofType:@"wav"];
sounds.level = 0;
OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.level);
if(status != 0) {
[LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"call\" system sound"];
}
}
return YES;
}

View file

@ -94,4 +94,21 @@
}
}
#pragma mark - Action Functions
- (IBAction)onDeleteClick: (id) event {
if(history != NULL) {
UIView *view = [self superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
if(view != nil) {
UITableView *tableView = (UITableView*) view;
NSIndexPath *indexPath = [tableView indexPathForCell:self];
[[tableView dataSource] tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath];
}
}
}
@end

View file

@ -12,6 +12,7 @@
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIButton</string>
<string>IBUIImageView</string>
<string>IBUILabel</string>
<string>IBUIView</string>
@ -50,7 +51,7 @@
<object class="IBUILabel" id="942147892">
<reference key="NSNextResponder" ref="1038390791"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{45, 10}, {155, 21}}</string>
<string key="NSFrame">{{45, 10}, {120, 21}}</string>
<reference key="NSSuperview" ref="1038390791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="661666265"/>
@ -81,10 +82,10 @@
<object class="IBUILabel" id="661666265">
<reference key="NSNextResponder" ref="1038390791"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{208, 10}, {112, 21}}</string>
<string key="NSFrame">{{173, 10}, {103, 21}}</string>
<reference key="NSSuperview" ref="1038390791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<reference key="NSNextKeyView" ref="509979453"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
@ -106,6 +107,41 @@
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIButton" id="509979453">
<reference key="NSNextResponder" ref="1038390791"/>
<int key="NSvFlags">257</int>
<string key="NSFrame">{{276, 0}, {44, 44}}</string>
<reference key="NSSuperview" ref="1038390791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<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>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<double key="IBUIImageEdgeInsets.top">11</double>
<double key="IBUIImageEdgeInsets.bottom">11</double>
<double key="IBUIImageEdgeInsets.left">11</double>
<double key="IBUIImageEdgeInsets.right">11</double>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUINormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">trash.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>
</object>
</array>
<string key="NSFrameSize">{320, 42}</string>
<reference key="NSSuperview"/>
@ -145,6 +181,15 @@
</object>
<int key="connectionID">11</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onDeleteClick:</string>
<reference key="source" ref="509979453"/>
<reference key="destination" ref="841351856"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">13</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -170,8 +215,9 @@
<reference key="object" ref="1038390791"/>
<array class="NSMutableArray" key="children">
<reference ref="171265463"/>
<reference ref="661666265"/>
<reference ref="942147892"/>
<reference ref="661666265"/>
<reference ref="509979453"/>
</array>
<reference key="parent" ref="0"/>
</object>
@ -193,6 +239,12 @@
<reference key="parent" ref="1038390791"/>
<string key="objectName">Image</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="509979453"/>
<reference key="parent" ref="1038390791"/>
<string key="objectName">deleteButton</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@ -200,6 +252,9 @@
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="2" key="12.IBUIButtonInspectorSelectedEdgeInsetMetadataKey"/>
<real value="0.0" key="12.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -210,16 +265,27 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">11</int>
<int key="maxID">13</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">UIHistoryCell</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">
<string key="name">onDeleteClick:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="dateLabel">UILabel</string>
<string key="iconImage">UIImageView</string>
<string key="iconImage">UIRemoteImageView</string>
<string key="stationLabel">UILabel</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@ -229,7 +295,7 @@
</object>
<object class="IBToOneOutletInfo" key="iconImage">
<string key="name">iconImage</string>
<string key="candidateClassName">UIImageView</string>
<string key="candidateClassName">UIRemoteImageView</string>
</object>
<object class="IBToOneOutletInfo" key="stationLabel">
<string key="name">stationLabel</string>
@ -259,6 +325,10 @@
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NS.key.0">trash.png</string>
<string key="NS.object.0">{26, 26}</string>
</object>
<string key="IBCocoaTouchPluginVersion">1498</string>
</data>
</archive>

View file

@ -75,4 +75,8 @@
return history;
}
- (void)remove {
}
@end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Resources/trash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

View file

@ -9,8 +9,6 @@
<string>SIP account</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>FooterText</key>
<string>Welcome must be restarted for changes to take effect</string>
</dict>
<dict>
<key>AutocapitalizationType</key>
@ -112,6 +110,66 @@
<key>DefaultValue</key>
<string></string>
</dict>
<dict>
<key>Title</key>
<string>Sounds</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>FooterText</key>
<string>Welcome must be restarted for changes to take effect</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>ringtone_01_1600</string>
<key>Key</key>
<string>ringtone_preference</string>
<key>Title</key>
<string>Ringtone</string>
<key>Titles</key>
<array>
<string>Ringtone 1</string>
<string>Ringtone 2</string>
<string>Ringtone 3</string>
<string>Ringtone 4</string>
<string>Ringtone 5</string>
</array>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Values</key>
<array>
<string>ringtone_01_1600</string>
<string>ringtone_02_1600</string>
<string>ringtone_03_1600</string>
<string>ringtone_04_1600</string>
<string>ringtone_05_1600</string>
</array>
</dict>
<dict>
<key>DefaultValue</key>
<string>ringtone_01_1600</string>
<key>Key</key>
<string>level_ringtone_preference</string>
<key>Title</key>
<string>Level Ringtone</string>
<key>Titles</key>
<array>
<string>Ringtone 1</string>
<string>Ringtone 2</string>
<string>Ringtone 3</string>
<string>Ringtone 4</string>
<string>Ringtone 5</string>
</array>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Values</key>
<array>
<string>ringtone_01_1600</string>
<string>ringtone_02_1600</string>
<string>ringtone_03_1600</string>
<string>ringtone_04_1600</string>
<string>ringtone_05_1600</string>
</array>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>

View file

@ -145,8 +145,18 @@
D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; };
D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
D37CD2D115E21CB30028869A /* 01.wav in Resources */ = {isa = PBXBuildFile; fileRef = D37CD2BF15E21CB30028869A /* 01.wav */; };
D37CD2D215E21CB30028869A /* 01.wav in Resources */ = {isa = PBXBuildFile; fileRef = D37CD2BF15E21CB30028869A /* 01.wav */; };
D376EAE1160082A4007C8226 /* trash.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE0160082A4007C8226 /* trash.png */; };
D376EAE2160082A4007C8226 /* trash.png in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE0160082A4007C8226 /* trash.png */; };
D376EAE816008454007C8226 /* ringtone_01_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE316008454007C8226 /* ringtone_01_1600.wav */; };
D376EAE916008454007C8226 /* ringtone_01_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE316008454007C8226 /* ringtone_01_1600.wav */; };
D376EAEA16008454007C8226 /* ringtone_02_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE416008454007C8226 /* ringtone_02_1600.wav */; };
D376EAEB16008454007C8226 /* ringtone_02_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE416008454007C8226 /* ringtone_02_1600.wav */; };
D376EAEC16008454007C8226 /* ringtone_03_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE516008454007C8226 /* ringtone_03_1600.wav */; };
D376EAED16008454007C8226 /* ringtone_03_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE516008454007C8226 /* ringtone_03_1600.wav */; };
D376EAEE16008454007C8226 /* ringtone_04_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE616008454007C8226 /* ringtone_04_1600.wav */; };
D376EAEF16008454007C8226 /* ringtone_04_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE616008454007C8226 /* ringtone_04_1600.wav */; };
D376EAF016008454007C8226 /* ringtone_05_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE716008454007C8226 /* ringtone_05_1600.wav */; };
D376EAF116008454007C8226 /* ringtone_05_1600.wav in Resources */ = {isa = PBXBuildFile; fileRef = D376EAE716008454007C8226 /* ringtone_05_1600.wav */; };
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 */; };
@ -573,7 +583,12 @@
D35E7580159328EB0066B1C1 /* UIAddressTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddressTextField.m; sourceTree = "<group>"; };
D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = "<group>"; };
D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = "<group>"; };
D37CD2BF15E21CB30028869A /* 01.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = 01.wav; path = Resources/01.wav; sourceTree = "<group>"; };
D376EAE0160082A4007C8226 /* trash.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = trash.png; path = Resources/trash.png; sourceTree = "<group>"; };
D376EAE316008454007C8226 /* ringtone_01_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_01_1600.wav; path = Resources/ringtone_01_1600.wav; sourceTree = "<group>"; };
D376EAE416008454007C8226 /* ringtone_02_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_02_1600.wav; path = Resources/ringtone_02_1600.wav; sourceTree = "<group>"; };
D376EAE516008454007C8226 /* ringtone_03_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_03_1600.wav; path = Resources/ringtone_03_1600.wav; sourceTree = "<group>"; };
D376EAE616008454007C8226 /* ringtone_04_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_04_1600.wav; path = Resources/ringtone_04_1600.wav; sourceTree = "<group>"; };
D376EAE716008454007C8226 /* ringtone_05_1600.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringtone_05_1600.wav; path = Resources/ringtone_05_1600.wav; sourceTree = "<group>"; };
D37CD2C615E21CB30028869A /* bj_barcode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_barcode.png; path = Resources/bj_barcode.png; sourceTree = "<group>"; };
D37CD2C715E21CB30028869A /* bj_decline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_decline.png; path = Resources/bj_decline.png; sourceTree = "<group>"; };
D37CD2C815E21CB30028869A /* bj_door_hl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bj_door_hl.png; path = Resources/bj_door_hl.png; sourceTree = "<group>"; };
@ -1239,10 +1254,6 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
D33BEE1C15FF711B004ED2AF /* linphonerc-factory */,
D33BEE1D15FF711B004ED2AF /* linphonerc-factory~ipad */,
D33BEE1E15FF711B004ED2AF /* rootca.pem */,
D37CD2BF15E21CB30028869A /* 01.wav */,
D37CD2C615E21CB30028869A /* bj_barcode.png */,
D37CD2C715E21CB30028869A /* bj_decline.png */,
D37CD2C915E21CB30028869A /* bj_door.png */,
@ -1262,8 +1273,17 @@
D37CD32415E220620028869A /* buschjaeger_icon_57@2x.png */,
D37CD32515E220620028869A /* buschjaeger_icon_72.png */,
D37CD32615E220620028869A /* buschjaeger_icon_72@2x.png */,
D321FF9815E628CB0098B5F4 /* linphonerc~ipad */,
57F005C315EE2CCF00914747 /* linphonerc */,
D33BEE1C15FF711B004ED2AF /* linphonerc-factory */,
D33BEE1D15FF711B004ED2AF /* linphonerc-factory~ipad */,
D321FF9815E628CB0098B5F4 /* linphonerc~ipad */,
D376EAE316008454007C8226 /* ringtone_01_1600.wav */,
D376EAE416008454007C8226 /* ringtone_02_1600.wav */,
D376EAE516008454007C8226 /* ringtone_03_1600.wav */,
D376EAE616008454007C8226 /* ringtone_04_1600.wav */,
D376EAE716008454007C8226 /* ringtone_05_1600.wav */,
D33BEE1E15FF711B004ED2AF /* rootca.pem */,
D376EAE0160082A4007C8226 /* trash.png */,
);
name = Resources;
sourceTree = "<group>";
@ -1468,7 +1488,6 @@
buildActionMask = 2147483647;
files = (
2214783D1386A2030020F8B8 /* Localizable.strings in Resources */,
D37CD2D115E21CB30028869A /* 01.wav in Resources */,
D37CD2DF15E21CB30028869A /* bj_barcode.png in Resources */,
D37CD2E115E21CB30028869A /* bj_decline.png in Resources */,
D37CD2E315E21CB30028869A /* bj_door_hl.png in Resources */,
@ -1507,6 +1526,12 @@
D33BEE1F15FF711B004ED2AF /* linphonerc-factory in Resources */,
D33BEE2115FF711B004ED2AF /* linphonerc-factory~ipad in Resources */,
D33BEE2315FF711B004ED2AF /* rootca.pem in Resources */,
D376EAE1160082A4007C8226 /* trash.png in Resources */,
D376EAE816008454007C8226 /* ringtone_01_1600.wav in Resources */,
D376EAEA16008454007C8226 /* ringtone_02_1600.wav in Resources */,
D376EAEC16008454007C8226 /* ringtone_03_1600.wav in Resources */,
D376EAEE16008454007C8226 /* ringtone_04_1600.wav in Resources */,
D376EAF016008454007C8226 /* ringtone_05_1600.wav in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1515,7 +1540,6 @@
buildActionMask = 2147483647;
files = (
D34BD74115C13E250070C209 /* Localizable.strings in Resources */,
D37CD2D215E21CB30028869A /* 01.wav in Resources */,
D37CD2E015E21CB30028869A /* bj_barcode.png in Resources */,
D37CD2E215E21CB30028869A /* bj_decline.png in Resources */,
D37CD2E415E21CB30028869A /* bj_door_hl.png in Resources */,
@ -1554,6 +1578,12 @@
D33BEE2015FF711B004ED2AF /* linphonerc-factory in Resources */,
D33BEE2215FF711B004ED2AF /* linphonerc-factory~ipad in Resources */,
D33BEE2415FF711B004ED2AF /* rootca.pem in Resources */,
D376EAE2160082A4007C8226 /* trash.png in Resources */,
D376EAE916008454007C8226 /* ringtone_01_1600.wav in Resources */,
D376EAEB16008454007C8226 /* ringtone_02_1600.wav in Resources */,
D376EAED16008454007C8226 /* ringtone_03_1600.wav in Resources */,
D376EAEF16008454007C8226 /* ringtone_04_1600.wav in Resources */,
D376EAF116008454007C8226 /* ringtone_05_1600.wav in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};