Revision: 4123
http://skim-app.svn.sourceforge.net/skim-app/?rev=4123&view=rev
Author: hofman
Date: 2008-07-03 10:14:41 -0700 (Thu, 03 Jul 2008)
Log Message:
-----------
Implement singletons along the lines of the docs.
Modified Paths:
--------------
trunk/SKBookmarkController.m
trunk/SKPDFHoverWindow.m
trunk/SKPreferenceController.m
trunk/SKRemoteStateWindow.m
Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m 2008-07-03 15:02:16 UTC (rev 4122)
+++ trunk/SKBookmarkController.m 2008-07-03 17:14:41 UTC (rev 4123)
@@ -84,15 +84,18 @@
maxRecentDocumentsCount = 50;
}
+static SKBookmarkController *sharedBookmarkController = nil;
+
+ (id)sharedBookmarkController {
- static SKBookmarkController *sharedBookmarkController = nil;
- if (sharedBookmarkController == nil)
- sharedBookmarkController = [[self alloc] init];
- return sharedBookmarkController;
+ return sharedBookmarkController ? sharedBookmarkController : [[self alloc]
init];
}
++ (id)allocWithZone:(NSZone *)zone {
+ return sharedBookmarkController ? sharedBookmarkController : [super
allocWithZone:zone];
+}
+
- (id)init {
- if (self = [super init]) {
+ if (sharedBookmarkController == nil && (sharedBookmarkController = self =
[super init])) {
recentDocuments = [[NSMutableArray alloc] init];
NSMutableArray *bookmarks = [NSMutableArray array];
@@ -139,7 +142,7 @@
name:SKBookmarkWillBeRemovedNotification
object:nil];
}
- return self;
+ return sharedBookmarkController;
}
- (void)dealloc {
@@ -152,6 +155,14 @@
[super dealloc];
}
+- (id)retain { return self; }
+
+- (id)autorelease { return self; }
+
+- (void)release {}
+
+- (unsigned)retainCount { return UINT_MAX; }
+
- (NSString *)windowNibName { return @"BookmarksWindow"; }
- (void)windowDidLoad {
Modified: trunk/SKPDFHoverWindow.m
===================================================================
--- trunk/SKPDFHoverWindow.m 2008-07-03 15:02:16 UTC (rev 4122)
+++ trunk/SKPDFHoverWindow.m 2008-07-03 17:14:41 UTC (rev 4123)
@@ -60,15 +60,18 @@
@implementation SKPDFHoverWindow
+static SKPDFHoverWindow *sharedHoverWindow = nil;
+
+ (id)sharedHoverWindow {
- static SKPDFHoverWindow *sharedHoverWindow = nil;
- if (sharedHoverWindow == nil)
- sharedHoverWindow = [[self alloc] init];
- return sharedHoverWindow;
+ return sharedHoverWindow ? sharedHoverWindow : [[self alloc] init];
}
++ (id)allocWithZone:(NSZone *)zone {
+ return sharedHoverWindow ? sharedHoverWindow : [super allocWithZone:zone];
+}
+
- (id)init {
- if (self = [super initWithContentRect:NSZeroRect]) {
+ if (sharedHoverWindow == nil && (sharedHoverWindow = self = [super
initWithContentRect:NSZeroRect])) {
[self setHidesOnDeactivate:NO];
[self setIgnoresMouseEvents:YES];
[self setOpaque:YES];
@@ -92,7 +95,7 @@
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleApplicationWillResignActiveNotification:)
name:NSApplicationWillResignActiveNotification object:NSApp];
}
- return self;
+ return sharedHoverWindow;
}
- (void)dealloc {
@@ -103,6 +106,14 @@
[super dealloc];
}
+- (id)retain { return self; }
+
+- (id)autorelease { return self; }
+
+- (void)release {}
+
+- (unsigned)retainCount { return UINT_MAX; }
+
- (NSFont *)font {
return font;
}
Modified: trunk/SKPreferenceController.m
===================================================================
--- trunk/SKPreferenceController.m 2008-07-03 15:02:16 UTC (rev 4122)
+++ trunk/SKPreferenceController.m 2008-07-03 17:14:41 UTC (rev 4123)
@@ -78,7 +78,7 @@
sudc = [NSUserDefaultsController sharedUserDefaultsController];
[sudc addObserver:self forKeys:[NSArray
arrayWithObjects:SKDefaultPDFDisplaySettingsKey,
SKDefaultFullScreenPDFDisplaySettingsKey, nil]
context:SKPreferenceWindowDefaultsObservationContext];
}
- return self;
+ return sharedPrefenceController;
}
- (void)dealloc {
Modified: trunk/SKRemoteStateWindow.m
===================================================================
--- trunk/SKRemoteStateWindow.m 2008-07-03 15:02:16 UTC (rev 4122)
+++ trunk/SKRemoteStateWindow.m 2008-07-03 17:14:41 UTC (rev 4123)
@@ -52,24 +52,38 @@
@implementation SKRemoteStateWindow
+static id sharedRemoteStateWindow = nil;
+
+ (id)sharedRemoteStateWindow {
- static id sharedRemoteStateWindow = nil;
- if (sharedRemoteStateWindow == nil)
- sharedRemoteStateWindow = [[SKRemoteStateWindow alloc] init];
- return sharedRemoteStateWindow;
+ return sharedRemoteStateWindow ? sharedRemoteStateWindow : [[self alloc]
init];
}
++ (id)allocWithZone:(NSZone *)zone {
+ return sharedRemoteStateWindow ? sharedRemoteStateWindow : [super
allocWithZone:zone];
+}
+
- (id)init {
- NSRect contentRect = SKRectFromCenterAndSize(NSZeroPoint,
SKMakeSquareSize(60.0));
- if (self = [super initWithContentRect:contentRect]) {
- [self setIgnoresMouseEvents:YES];
- [self setDisplaysWhenScreenProfileChanges:NO];
- [self setLevel:NSStatusWindowLevel];
- [self setContentView:[[[SKRemoteStateView alloc] init] autorelease]];
+ if (sharedRemoteStateWindow == nil) {
+ NSRect contentRect = SKRectFromCenterAndSize(NSZeroPoint,
SKMakeSquareSize(60.0));
+ if (self = [super initWithContentRect:contentRect]) {
+ sharedRemoteStateWindow = self;
+ [self setIgnoresMouseEvents:YES];
+ [self setDisplaysWhenScreenProfileChanges:NO];
+ [self setLevel:NSStatusWindowLevel];
+ [self setContentView:[[[SKRemoteStateView alloc] init]
autorelease]];
+ }
}
- return self;
+ return sharedRemoteStateWindow;
}
+- (id)retain { return self; }
+
+- (id)autorelease { return self; }
+
+- (void)release {}
+
+- (unsigned)retainCount { return UINT_MAX; }
+
- (float)defaultAlphaValue { return 0.95; }
- (NSTimeInterval)autoHideTimeInterval {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit