JLChen
2021-08-02 38f4fb064df09f344fc3237409c76a9fba2a8a9e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
 * Copyright (c) 2010-2020 Belledonne Communications SARL.
 *
 * This file is part of linphone-iphone
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
 
#import "HistoryDetailsTableView.h"
#import "LinphoneManager.h"
#import "Utils.h"
 
@implementation HistoryDetailsTableView
 
- (void)loadDataForAddress:(const LinphoneAddress *)peer {
    if (callLogs == nil) {
        callLogs = [[NSMutableArray alloc] init];
    } else {
        [callLogs removeAllObjects];
    }
 
    if (peer) {
        const bctbx_list_t *logs = linphone_core_get_call_history_for_address(LC, peer);
        while (logs != NULL) {
            LinphoneCallLog *log = (LinphoneCallLog *)logs->data;
            if (linphone_address_weak_equal(linphone_call_log_get_remote_address(log), peer)) {
                [callLogs addObject:[NSValue valueWithPointer:log]];
            }
            logs = bctbx_list_next(logs);
        }
    }
    [[self tableView] reloadData];
}
 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [callLogs count];
}
 
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 44);
    UIView *tempView = [[UIView alloc] initWithFrame:frame];
    if (@available(iOS 13, *)) {
        tempView.backgroundColor = [UIColor systemBackgroundColor];
    } else {
        tempView.backgroundColor = [UIColor whiteColor];
    }
 
    UILabel *tempLabel = [[UILabel alloc] initWithFrame:frame];
    tempLabel.backgroundColor = [UIColor clearColor];
    tempLabel.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"color_E.png"]];
    tempLabel.text = NSLocalizedString(@"Calls", nil);
    tempLabel.textAlignment = NSTextAlignmentCenter;
    tempLabel.font = [UIFont boldSystemFontOfSize:17];
    tempLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
    [tempView addSubview:tempLabel];
 
    return tempView;
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *kCellId = @"UITableViewCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] init];
    }
 
    LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue];
    int duration = linphone_call_log_get_duration(log);
    time_t callTime = linphone_call_log_get_start_date(log);
    cell.textLabel.textAlignment = NSTextAlignmentCenter;
    [cell.textLabel
        setText:[NSString stringWithFormat:@"%@ - %@",
                                           [LinphoneUtils timeToString:callTime withFormat:LinphoneDateHistoryDetails],
                                           [LinphoneUtils durationToString:duration]]];
    BOOL outgoing = (linphone_call_log_get_dir(log) == LinphoneCallOutgoing);
 
    if (linphone_call_log_get_status(log) == LinphoneCallMissed) {
        cell.imageView.image = [UIImage imageNamed:@"call_missed.png"];
    } else if (outgoing) {
        cell.imageView.image = [UIImage imageNamed:@"call_outgoing.png"];
    } else {
        cell.imageView.image = [UIImage imageNamed:@"call_incoming.png"];
    }
    cell.contentView.userInteractionEnabled =  false;
 
    return cell;
}
 
@end