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

Reply via email to