aboutsummaryrefslogtreecommitdiffhomepage
path: root/example/mac/macExample/macExample/MCTMsgListViewController.m
blob: b49d61eb90196b95c9e10373d55debd1851e52e2 (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
//
//  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"

#define FOLDER @"INBOX"

@interface MCTMsgListViewController () <NSTableViewDelegate, NSTableViewDataSource>

@end

@implementation MCTMsgListViewController

- (void) awakeFromNib
{
    [self connect];
}

- (void) connect
{
    [_msgViewController setFolder:FOLDER];
    
    NSString * login = [[NSUserDefaults standardUserDefaults] stringForKey:@"Login"];
    NSString * password = [[NSUserDefaults standardUserDefaults] stringForKey:@"Password"];
    if (([login length] == 0) || ([password length] == 0))
        return;
    
    _session = [[MCOIMAPSession alloc] init];
    [_session setHostname:@"imap.gmail.com"];
    [_session setPort:993];
    [_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];
        _messages = [messages retain];
        NSLog(@"%i messages", (int) [_messages count]);
        //NSLog(@"%@", _messages);
        [_tableView reloadData];
    }];
}

- (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