blob: 0d7cee7a104913e9c734ca289bea0dc417c0e779 (
plain)
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
105
|
//
// MCTMsgListViewController.m
// testUI
//
// Created by DINH Viêt Hoà on 1/20/13.
// Copyright (c) 2013 MailCore. All rights reserved.
//
#import "MCTMsgListViewController.h"
#include <MailCore/MailCore.h>
#import "MCTMsgViewController.h"
#import "FXKeychain.h"
#define FOLDER @"INBOX"
@interface MCTMsgListViewController () <NSTableViewDelegate, NSTableViewDataSource>
@property (nonatomic, assign) BOOL loading;
@end
@implementation MCTMsgListViewController
- (void) connectWithHostname:(NSString *)hostname
login:(NSString *)login
password:(NSString *)password
oauth2Token:(NSString *)oauth2Token
{
[_msgViewController setFolder:FOLDER];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OAuth2Enabled"]) {
if (([login length] == 0) || ([oauth2Token length] == 0))
return;
}
else {
if (([login length] == 0) || ([password length] == 0))
return;
}
self.loading = YES;
_session = [[MCOIMAPSession alloc] init];
[_session setHostname:hostname];
[_session setPort:993];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OAuth2Enabled"]) {
[_session setUsername:login];
[_session setOAuth2Token:oauth2Token];
[_session setAuthType:MCOAuthTypeXOAuth2];
}
else {
[_session setUsername:login];
[_session setPassword:password];
}
[_session setConnectionType:MCOConnectionTypeTLS];
MCOIMAPMessagesRequestKind requestKind = (MCOIMAPMessagesRequestKind)
(MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure |
MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject |
MCOIMAPMessagesRequestKindFlags);
_op = [_session fetchMessagesByUIDOperationWithFolder:FOLDER requestKind:requestKind uids:[MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)]];
[_op setProgress:^(unsigned int current){
//NSLog(@"progress: %u", current);
}];
[_op start:^(NSError * error, NSArray * messages, MCOIndexSet * vanishedMessages) {
[_messages release];
// Sort the messages with the most recent first.
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"header.date" ascending:NO];
_messages = [[messages sortedArrayUsingDescriptors:@[sort]] retain];
NSLog(@"error: %@", error);
NSLog(@"%i messages", (int) [_messages count]);
//NSLog(@"%@", _messages);
[_tableView reloadData];
self.loading = NO;
}];
}
- (NSInteger) numberOfRowsInTableView:(NSTableView *)aTableView
{
return [_messages count];
}
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
MCOIMAPMessage * msg = [_messages objectAtIndex:rowIndex];
return [[msg header] subject];
}
- (void) tableViewSelectionDidChange:(NSNotification *)notification
{
int rowIndex = (int) [_tableView selectedRow];
if (rowIndex == -1) {
[_msgViewController setSession:nil];
[_msgViewController setMessage:nil];
}
else {
MCOIMAPMessage * msg = [_messages objectAtIndex:rowIndex];
[_msgViewController setSession:_session];
[_msgViewController setMessage:msg];
}
}
@end
|