-
Notifications
You must be signed in to change notification settings - Fork 1
/
CPALoginViewController.j
124 lines (97 loc) · 3.98 KB
/
CPALoginViewController.j
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
@import <Foundation/CPObject.j>
@import <LPKit/LPKit.j>
@import <EKShakeAnimation/EKShakeAnimation.j>
@import <EKActivityIndicatorView/EKActivityIndicatorView.j>
@implementation CPALoginViewController : CPViewController
{
CPView loginView;
CPTextField userLable;
CPTextField userTextField;
EKActivityIndicatorView activityIndicator;
CPCheckBox rememberCheckBox;
CPButton preButton;
}
- (id)init
{
if (self = [super init])
{
}
return self;
}
- (void)loadView
{
var contentView = [[CPView alloc] initWithFrame:CGRectMake(0,0,330,190)];
[contentView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
loginView = [[CPView alloc] initWithFrame:CGRectMake(5,5,320,180)];
[loginView setAutoresizingMask:CPViewMinXMargin | CPViewMaxXMargin | CPViewMinYMargin | CPViewMaxYMargin];
[contentView addSubview:loginView];
userLable = [CPTextField labelWithTitle:@"Welcome!"];
[userLable setFrame:CGRectMake(0, 20, 320, 30)];
[userLable setFont:[CPFont boldSystemFontOfSize:20]];
[userLable setTextColor:[CPColor colorWithHexString:@"ccc"]];
[userLable setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"];
[loginView addSubview:userLable];
userTextField = [CPTextField textFieldWithStringValue:"" placeholder:"Twitter Screenname" width:100];
[userTextField setFrame:CGRectMake(60, 55, 200, 30)];
[loginView addSubview:userTextField];
activityIndicator = [[EKActivityIndicatorView alloc] initWithFrame:CGRectMake(265, 61, 18, 18)];
[loginView addSubview:activityIndicator];
rememberCheckBox = [CPCheckBox checkBoxWithTitle:@"Remember me"];
[rememberCheckBox setFrame:CGRectMake(64, 90, 130, 24)];
[loginView addSubview:rememberCheckBox];
preButton = [CPButton buttonWithTitle:@"Sign In"];
[preButton setFrame:CGRectMake(197, 90, 60, 24)];
[preButton setAction:@selector(loginAction:)];
[preButton setTarget:self];
[preButton setKeyEquivalent:CPNewlineCharacter]
[loginView addSubview:preButton];
[self setView:contentView];
}
- (void)setControlsEnabled:(BOOL)isEnabled
{
[userTextField setEnabled:isEnabled];
[rememberCheckBox setEnabled:isEnabled];
[preButton setEnabled:isEnabled];
if (!isEnabled)
[activityIndicator startAnimating];
else
[activityIndicator stopAnimating];
[activityIndicator setHidden:isEnabled];
}
- (void)loginAction:(id)sender
{
[self setControlsEnabled:NO];
var url = "http://api.twitter.com/1/users/show.json?screen_name="+[userTextField stringValue];
var request = [CPURLRequest requestWithURL: url];
var connection = [CPJSONPConnection sendRequest:request callback:"callback" delegate:self];
}
/* CPURLConnection Delegate */
- (void)connection:(CPJSONPConnection)aConnection didReceiveData:(CPString)data
{
[self setControlsEnabled:YES];
//var myJSObject = JSON.parse(data);
var myJSObject = data;
if (myJSObject) {
if (myJSObject.error == "Not found") {
var animation = [[EKShakeAnimation alloc] initWithView:loginView];
[userLable setStringValue:@"Couldn't find user."];
return;
}
//if (myJSObject["protected"])
// [userLable setStringValue:@"Currently not working with protected profiles."];
if ([rememberCheckBox state] == CPOnState)
[[LPCookieController sharedCookieController] setValue:[userTextField stringValue] forKey:@"screenname"];
[[[CPApplication sharedApplication] delegate] applicationDidFinishLogin:[userTextField stringValue]];
}
}
- (void)connection:(CPJSONPConnection)connection didFailWithError:(id)error
{
[self setControlsEnabled:YES];
if (error == 404)
[userLable setStringValue:@"Couldn't find user."];
else
[userLable setStringValue:error];
}
- (void)connectionDidFinishLoading:(CPJSONPConnection)aConnection {
}
@end