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
|