-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathServerTabViewController.m
More file actions
113 lines (96 loc) · 2.66 KB
/
Copy pathServerTabViewController.m
File metadata and controls
113 lines (96 loc) · 2.66 KB
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
//
// ServerTabViewController.m
// ServerStatus
//
// Created by Florian Mutter on 24.05.10.
// Copyright 2010 skweez.net. All rights reserved.
//
#import "ServerTabViewController.h"
#import "Server.h"
@implementation ServerTabViewController
@synthesize serverName, serverHost, lastKnownAddress, serverStatus, pingingIndicator, server;
#pragma mark Private
- (NSString *)getStatusString:(ServerStatus) aServerStatus {
NSString *status;
switch (aServerStatus) {
case SERVER_OK:
status = NSLocalizedString(@"Reachable",@"Reachable");
break;
case SERVER_FAIL:
status = NSLocalizedString(@"Unreachable",@"Unreachable");
break;
default:
status = NSLocalizedString(@"Unknown",@"Unknown");
break;
}
return status;
}
- (void)setServer:(Server *)aServer {
[server removeObserver:self forKeyPath:@"lastKnownAddress"];
[server removeObserver:self forKeyPath:@"serverStatus"];
[server removeObserver:self forKeyPath:@"pinging"];
if (aServer) {
[aServer addObserver:self
forKeyPath:@"lastKnownAddress"
options:0
context:NULL];
[aServer addObserver:self
forKeyPath:@"serverStatus"
options:0
context:NULL];
[aServer addObserver:self
forKeyPath:@"pinging"
options:0
context:NULL];
}
[server autorelease];
server = [aServer retain];
}
- (void)serverIsPinging:(BOOL)pinging {
if (pinging) {
[serverStatus setHidden:YES];
[pingingIndicator startAnimation:self];
} else {
[pingingIndicator stopAnimation:self];
[serverStatus setHidden:NO];
}
}
- (void)awakeFromNib {
[self addObserver:self
forKeyPath:@"server"
options:0
context:NULL];
}
- (void) dealloc
{
[self removeObserver:self forKeyPath:@"server"];
self.server = nil;
[super dealloc];
}
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
[self updateView];
}
- (void)updateView {
if (server) {
[self.serverName setStringValue:self.server.serverName];
[self.serverHost setStringValue:self.server.serverHost];
[self.serverHost setEnabled:YES];
[self serverIsPinging:[server pinging]];
[self.serverStatus setStringValue:[self getStatusString:[self.server serverStatus]]];
[self.lastKnownAddress setStringValue:[self.server lastKnownAddressAsString]];
} else {
[self.serverName setStringValue:@"Server"];
[self.serverHost setStringValue:@""];
[self.serverHost setEnabled:NO];
[self serverIsPinging:FALSE];
[self.serverStatus setStringValue:@""];
[self.lastKnownAddress setStringValue:@""];
}
}
- (void)controlTextDidEndEditing:(NSNotification *)obj {
self.server.serverHost = [self.serverHost stringValue];
}
@end