aboutsummaryrefslogtreecommitdiffhomepage
path: root/example/mac/macExample/macExample/AppDelegate.m
blob: 12c744e8e172667d8b0579963cb0d52db5146536 (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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
//  AppDelegate.m
//  testUI
//
//  Created by DINH Viêt Hoà on 1/19/13.
//  Copyright (c) 2013 MailCore. All rights reserved.
//

#import "AppDelegate.h"

#import <MailCore/MailCore.h>

#import "MCTMsgListViewController.h"

@interface AppDelegate () <NSTextFieldDelegate>

@end

@implementation AppDelegate {
    MCOIMAPSession * _session;
    MCOIMAPOperation * _checkOp;
}

- (void) dealloc
{
    [super dealloc];
}

- (void) awakeFromNib
{
    [_loginTextField setDelegate:self];
    [_passwordTextField setDelegate:self];
}

- (void) applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self _updateState];
    
    NSString * login = [[NSUserDefaults standardUserDefaults] stringForKey:@"Login"];
    NSString * password = [[NSUserDefaults standardUserDefaults] stringForKey:@"Password"];
    
    if (([login length] == 0) || ([password length] == 0)) {
        [_accountWindow makeKeyAndOrderFront:nil];
    }
    else {
        [_loginTextField setStringValue:login];
        [_passwordTextField setStringValue:password];
    }
}

- (void) accountLogin:(id)sender
{
    NSString * login = [_loginTextField stringValue];
    NSString * password = [_passwordTextField stringValue];
    
    NSLog(@"try login");
    _session = [[MCOIMAPSession alloc] init];
    [_session setHostname:@"imap.gmail.com"];
    [_session setPort:993];
    [_session setUsername:login];
    [_session setPassword:password];
    [_session setConnectionType:MCOConnectionTypeTLS];
    _checkOp = [[_session checkAccountOperation] retain];
    NSLog(@"start op");
    [_checkOp start:^(NSError * error) {
        [_accountWindow orderOut:nil];
        
        NSString * login = [_loginTextField stringValue];
        NSString * password = [_passwordTextField stringValue];
        [[NSUserDefaults standardUserDefaults] setObject:login forKey:@"Login"];
        [[NSUserDefaults standardUserDefaults] setObject:password forKey:@"Password"];
        
        [_checkOp release];
        _checkOp = nil;
        [_session release];
        _session = nil;
        
        [self _updateState];
        
        NSLog(@"op done %@", error);
        
        [_msgListViewController connect];
    }];
    
    [self _updateState];
}

- (void) accountCancel:(id)sender
{
    [_checkOp cancel];
    [_checkOp release];
    _checkOp = nil;
    [_session release];
    _session = nil;
    
    [self _updateState];
}

- (void) _updateState
{
    if (_checkOp == nil) {
        [_loginTextField setEnabled:YES];
        [_passwordTextField setEnabled:YES];
        NSString * login = [_loginTextField stringValue];
        NSString * password = [_passwordTextField stringValue];
        if (([login length] > 0) && ([password length] > 0)) {
            [_loginButton setEnabled:YES];
        }
        else {
            [_loginButton setEnabled:NO];
        }
        [_cancelButton setEnabled:NO];
        [_progressView stopAnimation:nil];
    }
    else {
        [_loginTextField setEnabled:NO];
        [_passwordTextField setEnabled:NO];
        [_loginButton setEnabled:NO];
        [_cancelButton setEnabled:YES];
        [_progressView startAnimation:nil];
    }
}

- (void) controlTextDidChange:(NSNotification *)aNotification
{
    [self _updateState];
}

@end