forked from mipstian/catch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCTCRecentsController.m
91 lines (69 loc) · 3.02 KB
/
CTCRecentsController.m
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
#import "CTCRecentsController.h"
#import "CTCDefaults.h"
#import "CTCScheduler.h"
#import "CTCRecentsCellView.h"
#import "CTCBrowser.h"
@interface CTCRecentsController ()
@property (weak) IBOutlet NSTableView *table;
@property (strong, nonatomic) NSDateFormatter *downloadDateFormatter;
@end
@implementation CTCRecentsController
- (void)awakeFromNib {
// Create a formatter for torrent download dates
self.downloadDateFormatter = NSDateFormatter.new;
self.downloadDateFormatter.timeStyle = NSDateFormatterShortStyle;
self.downloadDateFormatter.dateStyle = NSDateFormatterShortStyle;
self.downloadDateFormatter.doesRelativeDateFormatting = YES;
[self setupObservers];
}
- (void)setupObservers {
__weak typeof(self) weakSelf = self;
[NSNotificationCenter.defaultCenter addObserverForName:kCTCSchedulerLastUpdateStatusNotificationName
object:CTCScheduler.sharedScheduler
queue:nil
usingBlock:^(NSNotification *notification) {
if (weakSelf) [weakSelf.table reloadData];
}];
}
- (IBAction)showWindow:(id)sender {
[self.table reloadData];
[NSApp activateIgnoringOtherApps:YES];
[super showWindow:sender];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return CTCDefaults.downloadHistory.count;
}
- (IBAction)downloadRecentItemAgain:(NSButton *)senderButton {
NSUInteger clickedRow = [self.table rowForView:senderButton];
NSDictionary *recentToDownload = CTCDefaults.downloadHistory[clickedRow];
if (!recentToDownload) return;
BOOL isMagnetLink = [recentToDownload[@"isMagnetLink"] boolValue];
if (isMagnetLink) {
[CTCBrowser openInBackgroundURL:[NSURL URLWithString:recentToDownload[@"url"]]];
}
else {
[CTCScheduler.sharedScheduler downloadFile:recentToDownload
completion:^(NSDictionary *downloadedFile, NSError *error) {
if (downloadedFile && CTCDefaults.shouldOpenTorrentsAutomatically) {
[CTCBrowser openInBackgroundFile:downloadedFile[@"torrentFilePath"]];
}
}];
}
}
- (NSView *)tableView:(NSTableView *)tableView
viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row {
NSDictionary *recent = CTCDefaults.downloadHistory[row];
CTCRecentsCellView *cell = [tableView makeViewWithIdentifier:@"RecentCell" owner:self];
cell.textField.stringValue = recent[@"title"];
NSDate *downloadDate = (NSDate *)recent[@"date"];
cell.downloadDateTextField.stringValue = downloadDate ? [self.downloadDateFormatter stringFromDate:downloadDate] : @"";
return cell;
}
- (BOOL)selectionShouldChangeInTableView:(NSTableView *)tableView {
return NO;
}
- (void)dealloc {
[NSNotificationCenter.defaultCenter removeObserver:self];
}
@end