Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
124 lines (97 sloc) 2.5 KB
/*
* 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