-
Notifications
You must be signed in to change notification settings - Fork 13
/
StatusTextField.m
123 lines (97 loc) · 2.5 KB
/
StatusTextField.m
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
/*
* The Cheat - The legendary universal game trainer for Mac OS X.
* http://www.brokenzipper.com/trac/wiki/TheCheat
*
* Copyright (c) 2003-2011, Charles McGarvey et al.
*
* Distributable under the terms and conditions of the 2-clause BSD
* license; see the file COPYING for the legal text of the license.
*/
#import "StatusTextField.h"
@interface StatusTextField ( Private )
- (void)doTimer:(NSTimer *)timer;
@end
@implementation StatusTextField
- (id)init
{
if ( self = [super init] ) {
myTimer = nil;
}
return self;
}
- (void)dealloc
{
[myDefaultStatus release];
[myTimer invalidate];
[myTimer release];
[super dealloc];
}
- (void)setDefaultStatus:(NSString *)message
{
[self setDefaultStatus:message color:[NSColor blackColor]];
}
- (void)setDefaultStatus:(NSString *)message color:(NSColor *)color
{
if ( !message ) {
message = [NSString stringWithString:@""];
}
if ( !color ) {
color = [NSColor blackColor];
}
// save the new values
[message retain];
[myDefaultStatus release];
myDefaultStatus = message;
// save the new values
[color retain];
[myDefaultColor release];
myDefaultColor = color;
// set the new default if there isn't already a temp showing
if ( !myTimer ) {
[self setStringValue:myDefaultStatus];
[self setTextColor:myDefaultColor];
}
}
- (void)setTemporaryStatus:(NSString *)message
{
[self setTemporaryStatus:message color:[NSColor blackColor]];
}
- (void)setTemporaryStatus:(NSString *)message color:(NSColor *)color
{
[self setTemporaryStatus:message color:color duration:4.0];
}
- (void)setTemporaryStatus:(NSString *)message duration:(NSTimeInterval)duration
{
[self setTemporaryStatus:message color:[NSColor blackColor] duration:duration];
}
- (void)setTemporaryStatus:(NSString *)message color:(NSColor *)color duration:(NSTimeInterval)duration
{
// stop any current temporary status
[myTimer invalidate];
[myTimer release];
if ( !message ) {
message = [NSString stringWithString:@""];
}
if ( !color ) {
color = [NSColor blackColor];
}
// set the new temporary status
[self setStringValue:message];
[self setTextColor:color];
// start the timer
myTimer = [[NSTimer scheduledTimerWithTimeInterval:duration target:self selector:@selector(doTimer:) userInfo:nil repeats:NO] retain];
}
- (void)doTimer:(NSTimer *)timer
{
// kill the timer
[myTimer release];
myTimer = nil;
// set the default status
if ( myDefaultStatus ) {
[self setStringValue:myDefaultStatus];
}
if ( myDefaultColor ) {
[self setTextColor:myDefaultColor];
}
}
@end