adium 5014:9cd3ed862ded: Get rid of KNShelfSplitView and Advance...

commits at adium.im commits at adium.im
Tue Aug 21 00:49:21 UTC 2012


details:	http://hg.adium.im/adium/rev/9cd3ed862ded
revision:	5014:9cd3ed862ded
branch:		adium-1.6
author:		Frank Dowsett <wixardy at adium.im>
date:		Sun Aug 19 20:22:36 2012 -0400

Get rid of KNShelfSplitView and AdvancedPreferences.xib
Subject: adium 5015:787b93a32710: -compositeToPoint is deprecated, change to -drawAtPoint. There are still some in PSMTabs that are being warned about.

details:	http://hg.adium.im/adium/rev/787b93a32710
revision:	5015:787b93a32710
branch:		adium-1.6
author:		Frank Dowsett <wixardy at adium.im>
date:		Sun Aug 19 20:40:30 2012 -0400

-compositeToPoint is deprecated, change to -drawAtPoint. There are still some in PSMTabs that are being warned about.
Subject: adium 5016:5b434bbcd80c: Avoid making AIPreferenceContainers when reading preferences for contacts that don't have any. Also cut down the size of each AIPreferenceContainer.

details:	http://hg.adium.im/adium/rev/5b434bbcd80c
revision:	5016:5b434bbcd80c
branch:		adium-1.6
author:		Frank Dowsett <wixardy at adium.im>
date:		Mon Aug 20 20:30:39 2012 -0400

Avoid making AIPreferenceContainers when reading preferences for contacts that don't have any. Also cut down the size of each AIPreferenceContainer.

diffs (truncated from 2121 to 1000 lines):

diff -r 3f57100aabf9 -r 5b434bbcd80c Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Mon Aug 29 17:56:00 2011 +0300
+++ b/Adium.xcodeproj/project.pbxproj	Mon Aug 20 20:30:39 2012 -0400
@@ -297,7 +297,6 @@
 		344838B50BC860770083723B /* AIAccountListPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8C3C980825EAF9004B9F45 /* AIAccountListPreferences.m */; };
 		344839380BC862780083723B /* pref-messages.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 34D8336707CBD807006466F2 /* pref-messages.tiff */; };
 		3448399A0BC8644C0083723B /* AIAdvancedPreferencesPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 344839980BC8644C0083723B /* AIAdvancedPreferencesPlugin.m */; };
-		34483A990BC869680083723B /* AdvancedPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34483A980BC869680083723B /* AdvancedPreferences.xib */; };
 		3448758E06D1EBDF00DA778C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3448758D06D1EBDF00DA778C /* Cocoa.framework */; };
 		3448761406D1EC0C00DA778C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3448758D06D1EBDF00DA778C /* Cocoa.framework */; };
 		344D974F0C3C442600498CA1 /* InstantMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 344D97410C3C442500498CA1 /* InstantMessage.m */; };
@@ -956,9 +955,7 @@
 		34F144430BA8FF3C000473DE /* EmoticonNames.strings in Resources */ = {isa = PBXBuildFile; fileRef = 34F144420BA8FF3B000473DE /* EmoticonNames.strings */; };
 		34F17FCE0F8EAC34009C5A39 /* AIListOutlineView+Drawing.h in Headers */ = {isa = PBXBuildFile; fileRef = 34F17FCC0F8EAC34009C5A39 /* AIListOutlineView+Drawing.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		34F17FCF0F8EAC34009C5A39 /* AIListOutlineView+Drawing.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F17FCD0F8EAC34009C5A39 /* AIListOutlineView+Drawing.m */; };
-		34F312930ADC3FE800A4310E /* KNShelfSplitView.h in Headers */ = {isa = PBXBuildFile; fileRef = 348B25C70A50FBF300B2B972 /* KNShelfSplitView.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		34F312BD0ADC43CA00A4310E /* xtras_duck.png in Resources */ = {isa = PBXBuildFile; fileRef = 34F312BC0ADC43CA00A4310E /* xtras_duck.png */; };
-		34F312F00ADC476300A4310E /* KNShelfSplitView.m in Sources */ = {isa = PBXBuildFile; fileRef = 348B25C60A50FBF300B2B972 /* KNShelfSplitView.m */; };
 		34F4677A080F49C5007800AB /* Safari.scpt in Resources */ = {isa = PBXBuildFile; fileRef = 34F46778080F49C5007800AB /* Safari.scpt */; };
 		34F4677B080F49C5007800AB /* Safari.png in Resources */ = {isa = PBXBuildFile; fileRef = 34F46779080F49C5007800AB /* Safari.png */; };
 		34F46785080F7FFB007800AB /* ESSafariLinkToolbarItemPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F46783080F7FFB007800AB /* ESSafariLinkToolbarItemPlugin.m */; };
@@ -2456,7 +2453,6 @@
 		344836910BC8510B0083723B /* SS_PreferencePaneProtocol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SS_PreferencePaneProtocol.h; path = "Frameworks/Adium Framework/Source/SS_PreferencePaneProtocol.h"; sourceTree = "<group>"; };
 		344839970BC8644C0083723B /* AIAdvancedPreferencesPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAdvancedPreferencesPlugin.h; path = Source/AIAdvancedPreferencesPlugin.h; sourceTree = "<group>"; };
 		344839980BC8644C0083723B /* AIAdvancedPreferencesPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIAdvancedPreferencesPlugin.m; path = Source/AIAdvancedPreferencesPlugin.m; sourceTree = "<group>"; };
-		34483A980BC869680083723B /* AdvancedPreferences.xib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xib; name = AdvancedPreferences.xib; path = Resources/AdvancedPreferences.xib; sourceTree = "<group>"; };
 		3448758D06D1EBDF00DA778C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
 		3449485508E9FCCD0054FF57 /* AIContactMenu.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AIContactMenu.m; path = "Frameworks/Adium Framework/Source/AIContactMenu.m"; sourceTree = "<group>"; };
 		3449485608E9FCCD0054FF57 /* AIContactMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AIContactMenu.h; path = "Frameworks/Adium Framework/Source/AIContactMenu.h"; sourceTree = "<group>"; };
@@ -2954,8 +2950,6 @@
 		3489506A0CDE0CC5002FEB4D /* IKRecentPicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IKRecentPicture.h; path = Source/IKRecentPicture.h; sourceTree = "<group>"; };
 		348A8A190629A68C00FC6E03 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xib; name = en; path = "Plugins/Purple Service/Resources/en.lproj/ESPurpleJabberAccountView.xib"; sourceTree = "<group>"; };
 		348A901A062A13AB00FC6E03 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xib; name = en; path = "Plugins/Purple Service/Resources/en.lproj/ESPurpleYahooAccountView.xib"; sourceTree = "<group>"; };
-		348B25C60A50FBF300B2B972 /* KNShelfSplitView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = KNShelfSplitView.m; path = Source/KNShelfSplitView.m; sourceTree = "<group>"; };
-		348B25C70A50FBF300B2B972 /* KNShelfSplitView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = KNShelfSplitView.h; path = Source/KNShelfSplitView.h; sourceTree = "<group>"; };
 		348C47150D3B20BE00FB6E7A /* AIMessageWindowOutgoingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIMessageWindowOutgoingScrollView.h; path = Source/AIMessageWindowOutgoingScrollView.h; sourceTree = "<group>"; };
 		348C47160D3B20BE00FB6E7A /* AIMessageWindowOutgoingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIMessageWindowOutgoingScrollView.m; path = Source/AIMessageWindowOutgoingScrollView.m; sourceTree = "<group>"; };
 		348D8D1A06CC079F00449EBB /* ESZephyrService.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ESZephyrService.m; path = "Plugins/Purple Service/ESZephyrService.m"; sourceTree = "<group>"; };
@@ -6234,8 +6228,6 @@
 			isa = PBXGroup;
 			children = (
 				34D834CD07CBE7A3006466F2 /* Text field for previewing font preferences */,
-				348B25C70A50FBF300B2B972 /* KNShelfSplitView.h */,
-				348B25C60A50FBF300B2B972 /* KNShelfSplitView.m */,
 			);
 			name = "External Sources";
 			sourceTree = "<group>";
@@ -8407,7 +8399,6 @@
 				3474DFFF082550FD00BF30F0 /* Credits.rtf */,
 				34107B5509E992DA001CC042 /* GuestAccountWindow.xib */,
 				34F849520A4AEFA00002A017 /* LogFileUpgrade.xib */,
-				34483A980BC869680083723B /* AdvancedPreferences.xib */,
 			);
 			name = "About Box";
 			sourceTree = "<group>";
@@ -9005,7 +8996,6 @@
 				34DC8B030A7EEEF7003E1636 /* ESFileWrapperExtension.h in Headers */,
 				34DC8B0A0A7EEEF7003E1636 /* JVFontPreviewField.h in Headers */,
 				3482E0F50AB5064E00471992 /* AIAdiumProtocol.h in Headers */,
-				34F312930ADC3FE800A4310E /* KNShelfSplitView.h in Headers */,
 				11CA00100C35EC5100A6BB8D /* SS_PreferencePaneProtocol.h in Headers */,
 				34A88E190C7A26E1006EB7D4 /* AIPasswordPromptController.h in Headers */,
 				347933F30C861017007ADCAA /* AIColorStringTransformer.h in Headers */,
@@ -9634,7 +9624,6 @@
 				117D6DC00BC5F0C40080D02B /* msg-request-attention.tiff in Resources */,
 				344838690BC85EF70083723B /* AccountListPreferences.xib in Resources */,
 				344839380BC862780083723B /* pref-messages.tiff in Resources */,
-				34483A990BC869680083723B /* AdvancedPreferences.xib in Resources */,
 				07C6EA890C06676400B79CBD /* AdiumHelp in Resources */,
 				0CAC6A140C0C657A0090AE95 /* Adium.sdef in Resources */,
 				C4D29CC80C3C2E49001545A2 /* ICImport.xib in Resources */,
@@ -10487,7 +10476,6 @@
 				34DC8B020A7EEEF7003E1636 /* ESFileTransfer.m in Sources */,
 				34DC8B040A7EEEF7003E1636 /* ESFileWrapperExtension.m in Sources */,
 				34DC8B090A7EEEF7003E1636 /* JVFontPreviewField.m in Sources */,
-				34F312F00ADC476300A4310E /* KNShelfSplitView.m in Sources */,
 				34A88E180C7A26E0006EB7D4 /* AIPasswordPromptController.m in Sources */,
 				347933F40C861017007ADCAA /* AIColorStringTransformer.m in Sources */,
 				349195660C9662AA00595A04 /* AIListBookmark.m in Sources */,
diff -r 3f57100aabf9 -r 5b434bbcd80c Frameworks/AIUtilities Framework/Source/AIImageAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIImageAdditions.m	Mon Aug 29 17:56:00 2011 +0300
+++ b/Frameworks/AIUtilities Framework/Source/AIImageAdditions.m	Mon Aug 20 20:30:39 2012 -0400
@@ -129,7 +129,7 @@
 	NSRectFill(NSMakeRect(0, 0, size.width, size.height));
 	
 	// Draw the image
-	[self compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver];
+	[self drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
 	
 	// We're done drawing
 	[tempImage unlockFocus];
diff -r 3f57100aabf9 -r 5b434bbcd80c Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m	Mon Aug 29 17:56:00 2011 +0300
+++ b/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m	Mon Aug 20 20:30:39 2012 -0400
@@ -51,7 +51,7 @@
 			}
 			
 			// Draw and shift
-			[self compositeToPoint:destRect.origin fromRect:sourceRect operation:NSCompositeSourceOver];
+			[self drawAtPoint:destRect.origin fromRect:sourceRect operation:NSCompositeSourceOver fraction:1.0];
 			destRect.origin.x += destRect.size.width;
 		}
 		
diff -r 3f57100aabf9 -r 5b434bbcd80c Frameworks/Adium Framework/Source/ESFileTransfer.m
--- a/Frameworks/Adium Framework/Source/ESFileTransfer.m	Mon Aug 29 17:56:00 2011 +0300
+++ b/Frameworks/Adium Framework/Source/ESFileTransfer.m	Mon Aug 20 20:30:39 2012 -0400
@@ -378,7 +378,7 @@
 	
 	[iconImage lockFocus];
 	
-	[systemIcon compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver];
+	[systemIcon drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
 	
 	CGFloat line = ((NSWidth(bottomRight) / 15) + ((NSHeight(bottomRight) / 15) / 2));
 	NSRect	circleRect = NSMakeRect(NSMinX(bottomRight),
diff -r 3f57100aabf9 -r 5b434bbcd80c Plugins/Dual Window Interface/AIMessageWindowController.m
--- a/Plugins/Dual Window Interface/AIMessageWindowController.m	Mon Aug 29 17:56:00 2011 +0300
+++ b/Plugins/Dual Window Interface/AIMessageWindowController.m	Mon Aug 20 20:30:39 2012 -0400
@@ -1007,7 +1007,7 @@
 	NSPoint tabOrigin = [tabView frame].origin;
 	tabOrigin.x += 10;
 	tabOrigin.y += 13;
-	[tabViewImage compositeToPoint:tabOrigin operation:NSCompositeSourceOver];
+	[tabViewImage drawAtPoint:tabOrigin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
 	[viewImage unlockFocus];
 	
 	//draw over where the tab bar would usually be
diff -r 3f57100aabf9 -r 5b434bbcd80c Resources/AdvancedPreferences.xib
--- a/Resources/AdvancedPreferences.xib	Mon Aug 29 17:56:00 2011 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,626 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
-	<data>
-		<int key="IBDocument.SystemTarget">1060</int>
-		<string key="IBDocument.SystemVersion">11D50b</string>
-		<string key="IBDocument.InterfaceBuilderVersion">2182</string>
-		<string key="IBDocument.AppKitVersion">1138.32</string>
-		<string key="IBDocument.HIToolboxVersion">568.00</string>
-		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
-			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
-			<string key="NS.object.0">2182</string>
-		</object>
-		<array key="IBDocument.IntegratedClassDependencies">
-			<string>NSTableView</string>
-			<string>NSCustomObject</string>
-			<string>NSScrollView</string>
-			<string>NSCustomView</string>
-			<string>NSImageCell</string>
-			<string>NSTableColumn</string>
-			<string>NSScroller</string>
-			<string>NSTextFieldCell</string>
-		</array>
-		<array key="IBDocument.PluginDependencies">
-			<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-		</array>
-		<object class="NSMutableDictionary" key="IBDocument.Metadata">
-			<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
-			<integer value="1" key="NS.object.0"/>
-		</object>
-		<array class="NSMutableArray" key="IBDocument.RootObjects" id="334648337">
-			<object class="NSCustomObject" id="516906790">
-				<string key="NSClassName">AIAdvancedPreferences</string>
-			</object>
-			<object class="NSCustomObject" id="543707274">
-				<string key="NSClassName">FirstResponder</string>
-			</object>
-			<object class="NSCustomObject" id="363476122">
-				<string key="NSClassName">NSApplication</string>
-			</object>
-			<object class="NSCustomView" id="53881124">
-				<nil key="NSNextResponder"/>
-				<int key="NSvFlags">256</int>
-				<array class="NSMutableArray" key="NSSubviews">
-					<object class="NSScrollView" id="196563190">
-						<reference key="NSNextResponder" ref="53881124"/>
-						<int key="NSvFlags">276</int>
-						<array class="NSMutableArray" key="NSSubviews">
-							<object class="NSClipView" id="863562398">
-								<reference key="NSNextResponder" ref="196563190"/>
-								<int key="NSvFlags">2304</int>
-								<array class="NSMutableArray" key="NSSubviews">
-									<object class="NSTableView" id="557685908">
-										<reference key="NSNextResponder" ref="863562398"/>
-										<int key="NSvFlags">4352</int>
-										<string key="NSFrameSize">{183, 101}</string>
-										<reference key="NSSuperview" ref="863562398"/>
-										<reference key="NSNextKeyView" ref="31372689"/>
-										<bool key="NSEnabled">YES</bool>
-										<object class="_NSCornerView" key="NSCornerView">
-											<nil key="NSNextResponder"/>
-											<int key="NSvFlags">256</int>
-											<string key="NSFrame">{{-26, 0}, {16, 17}}</string>
-										</object>
-										<array class="NSMutableArray" key="NSTableColumns">
-											<object class="NSTableColumn" id="1020615924">
-												<string key="NSIdentifier">image</string>
-												<double key="NSWidth">36</double>
-												<double key="NSMinWidth">10</double>
-												<double key="NSMaxWidth">3.4028234663852886e+38</double>
-												<object class="NSTableHeaderCell" key="NSHeaderCell">
-													<int key="NSCellFlags">75628096</int>
-													<int key="NSCellFlags2">201328640</int>
-													<string key="NSContents"/>
-													<object class="NSFont" key="NSSupport" id="26">
-														<string key="NSName">LucidaGrande</string>
-														<double key="NSSize">11</double>
-														<int key="NSfFlags">3100</int>
-													</object>
-													<object class="NSColor" key="NSBackgroundColor">
-														<int key="NSColorSpace">6</int>
-														<string key="NSCatalogName">System</string>
-														<string key="NSColorName">headerColor</string>
-														<object class="NSColor" key="NSColor" id="273636539">
-															<int key="NSColorSpace">3</int>
-															<bytes key="NSWhite">MQA</bytes>
-														</object>
-													</object>
-													<object class="NSColor" key="NSTextColor" id="523366753">
-														<int key="NSColorSpace">6</int>
-														<string key="NSCatalogName">System</string>
-														<string key="NSColorName">headerTextColor</string>
-														<object class="NSColor" key="NSColor" id="1034811579">
-															<int key="NSColorSpace">3</int>
-															<bytes key="NSWhite">MAA</bytes>
-														</object>
-													</object>
-												</object>
-												<object class="NSImageCell" key="NSDataCell" id="971407898">
-													<int key="NSCellFlags">67239424</int>
-													<int key="NSCellFlags2">33685504</int>
-													<reference key="NSSupport" ref="26"/>
-													<int key="NSAlign">0</int>
-													<int key="NSScale">0</int>
-													<int key="NSStyle">0</int>
-													<bool key="NSAnimates">NO</bool>
-												</object>
-												<bool key="NSIsEditable">YES</bool>
-												<reference key="NSTableView" ref="557685908"/>
-											</object>
-											<object class="NSTableColumn" id="653637384">
-												<string key="NSIdentifier">description</string>
-												<double key="NSWidth">141.08999633789062</double>
-												<double key="NSMinWidth">30</double>
-												<double key="NSMaxWidth">1000</double>
-												<object class="NSTableHeaderCell" key="NSHeaderCell">
-													<int key="NSCellFlags">75628096</int>
-													<int key="NSCellFlags2">2048</int>
-													<string key="NSContents">Description</string>
-													<reference key="NSSupport" ref="26"/>
-													<object class="NSColor" key="NSBackgroundColor">
-														<int key="NSColorSpace">3</int>
-														<bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
-													</object>
-													<reference key="NSTextColor" ref="523366753"/>
-												</object>
-												<object class="NSTextFieldCell" key="NSDataCell" id="819754658">
-													<int key="NSCellFlags">338820672</int>
-													<int key="NSCellFlags2">1024</int>
-													<object class="NSFont" key="NSSupport">
-														<string key="NSName">LucidaGrande</string>
-														<double key="NSSize">13</double>
-														<int key="NSfFlags">1044</int>
-													</object>
-													<reference key="NSControlView" ref="557685908"/>
-													<reference key="NSBackgroundColor" ref="273636539"/>
-													<object class="NSColor" key="NSTextColor">
-														<int key="NSColorSpace">6</int>
-														<string key="NSCatalogName">System</string>
-														<string key="NSColorName">controlTextColor</string>
-														<reference key="NSColor" ref="1034811579"/>
-													</object>
-												</object>
-												<int key="NSResizingMask">3</int>
-												<bool key="NSIsResizeable">YES</bool>
-												<reference key="NSTableView" ref="557685908"/>
-											</object>
-										</array>
-										<double key="NSIntercellSpacingWidth">3</double>
-										<double key="NSIntercellSpacingHeight">2</double>
-										<object class="NSColor" key="NSBackgroundColor">
-											<int key="NSColorSpace">6</int>
-											<string key="NSCatalogName">System</string>
-											<string key="NSColorName">_sourceListBackgroundColor</string>
-											<object class="NSColor" key="NSColor">
-												<int key="NSColorSpace">6</int>
-												<string key="NSCatalogName">System</string>
-												<string key="NSColorName">alternateSelectedControlColor</string>
-												<object class="NSColor" key="NSColor">
-													<int key="NSColorSpace">1</int>
-													<bytes key="NSRGB">MCAwIDEAA</bytes>
-												</object>
-											</object>
-										</object>
-										<object class="NSColor" key="NSGridColor">
-											<int key="NSColorSpace">6</int>
-											<string key="NSCatalogName">System</string>
-											<string key="NSColorName">gridColor</string>
-											<object class="NSColor" key="NSColor">
-												<int key="NSColorSpace">3</int>
-												<bytes key="NSWhite">MC41AA</bytes>
-											</object>
-										</object>
-										<double key="NSRowHeight">32</double>
-										<int key="NSTvFlags">37781504</int>
-										<reference key="NSDelegate"/>
-										<reference key="NSDataSource"/>
-										<int key="NSColumnAutoresizingStyle">1</int>
-										<int key="NSDraggingSourceMaskForLocal">15</int>
-										<int key="NSDraggingSourceMaskForNonLocal">0</int>
-										<bool key="NSAllowsTypeSelect">YES</bool>
-										<int key="NSTableViewSelectionHighlightStyle">1</int>
-										<int key="NSTableViewDraggingDestinationStyle">1</int>
-										<int key="NSTableViewGroupRowStyle">1</int>
-									</object>
-								</array>
-								<string key="NSFrameSize">{178, 101}</string>
-								<reference key="NSSuperview" ref="196563190"/>
-								<reference key="NSNextKeyView" ref="557685908"/>
-								<reference key="NSDocView" ref="557685908"/>
-								<object class="NSColor" key="NSBGColor">
-									<int key="NSColorSpace">6</int>
-									<string key="NSCatalogName">System</string>
-									<string key="NSColorName">controlBackgroundColor</string>
-									<object class="NSColor" key="NSColor">
-										<int key="NSColorSpace">3</int>
-										<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
-									</object>
-								</object>
-								<int key="NScvFlags">4</int>
-							</object>
-							<object class="NSScroller" id="31372689">
-								<reference key="NSNextResponder" ref="196563190"/>
-								<int key="NSvFlags">-2147483392</int>
-								<string key="NSFrame">{{-100, -100}, {15, 319}}</string>
-								<reference key="NSSuperview" ref="196563190"/>
-								<reference key="NSNextKeyView" ref="660980177"/>
-								<reference key="NSTarget" ref="196563190"/>
-								<string key="NSAction">_doScroller:</string>
-								<double key="NSPercent">0.9105263352394104</double>
-							</object>
-							<object class="NSScroller" id="660980177">
-								<reference key="NSNextResponder" ref="196563190"/>
-								<int key="NSvFlags">-2147483392</int>
-								<string key="NSFrame">{{-100, -100}, {98, 15}}</string>
-								<reference key="NSSuperview" ref="196563190"/>
-								<reference key="NSNextKeyView" ref="863562398"/>
-								<bool key="NSEnabled">YES</bool>
-								<int key="NSsFlags">1</int>
-								<reference key="NSTarget" ref="196563190"/>
-								<string key="NSAction">_doScroller:</string>
-								<double key="NSPercent">0.99047619104385376</double>
-							</object>
-						</array>
-						<string key="NSFrame">{{0, 5}, {178, 101}}</string>
-						<reference key="NSSuperview" ref="53881124"/>
-						<reference key="NSNextKeyView" ref="863562398"/>
-						<int key="NSsFlags">133248</int>
-						<reference key="NSVScroller" ref="31372689"/>
-						<reference key="NSHScroller" ref="660980177"/>
-						<reference key="NSContentView" ref="863562398"/>
-						<bytes key="NSScrollAmts">QSAAAEEgAABCCAAAQggAAA</bytes>
-					</object>
-					<object class="NSCustomView" id="915397879">
-						<reference key="NSNextResponder" ref="53881124"/>
-						<int key="NSvFlags">274</int>
-						<string key="NSFrame">{{0, 175}, {260, 203}}</string>
-						<reference key="NSSuperview" ref="53881124"/>
-						<reference key="NSNextKeyView" ref="196563190"/>
-						<string key="NSClassName">KNShelfSplitView</string>
-						<string key="NSExtension">NSView</string>
-					</object>
-					<object class="NSCustomView" id="154725182">
-						<reference key="NSNextResponder" ref="53881124"/>
-						<int key="NSvFlags">274</int>
-						<array class="NSMutableArray" key="NSSubviews">
-							<object class="NSCustomView" id="779513454">
-								<reference key="NSNextResponder" ref="154725182"/>
-								<int key="NSvFlags">274</int>
-								<string key="NSFrame">{{8, 8}, {282, 101}}</string>
-								<reference key="NSSuperview" ref="154725182"/>
-								<string key="NSClassName">AIModularPaneCategoryView</string>
-								<string key="NSExtension">NSView</string>
-							</object>
-						</array>
-						<string key="NSFrame">{{238, 95}, {298, 117}}</string>
-						<reference key="NSSuperview" ref="53881124"/>
-						<reference key="NSNextKeyView" ref="779513454"/>
-						<string key="NSClassName">NSView</string>
-					</object>
-				</array>
-				<string key="NSFrameSize">{580, 378}</string>
-				<reference key="NSNextKeyView" ref="915397879"/>
-				<object class="NSMutableString" key="NSClassName">
-					<characters key="NS.bytes">NSView</characters>
-				</object>
-				<string key="NSExtension">NSResponder</string>
-			</object>
-		</array>
-		<object class="IBObjectContainer" key="IBDocument.Objects">
-			<array class="NSMutableArray" key="connectionRecords">
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">shelf_splitView</string>
-						<reference key="source" ref="516906790"/>
-						<reference key="destination" ref="915397879"/>
-					</object>
-					<int key="connectionID">22</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">modularPane</string>
-						<reference key="source" ref="516906790"/>
-						<reference key="destination" ref="779513454"/>
-					</object>
-					<int key="connectionID">25</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">view</string>
-						<reference key="source" ref="516906790"/>
-						<reference key="destination" ref="53881124"/>
-					</object>
-					<int key="connectionID">23</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">tableView_categories</string>
-						<reference key="source" ref="516906790"/>
-						<reference key="destination" ref="557685908"/>
-					</object>
-					<int key="connectionID">24</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">dataSource</string>
-						<reference key="source" ref="557685908"/>
-						<reference key="destination" ref="516906790"/>
-					</object>
-					<int key="connectionID">26</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">delegate</string>
-						<reference key="source" ref="557685908"/>
-						<reference key="destination" ref="516906790"/>
-					</object>
-					<int key="connectionID">27</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">shelfView</string>
-						<reference key="source" ref="915397879"/>
-						<reference key="destination" ref="196563190"/>
-					</object>
-					<int key="connectionID">20</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">contentView</string>
-						<reference key="source" ref="915397879"/>
-						<reference key="destination" ref="154725182"/>
-					</object>
-					<int key="connectionID">29</int>
-				</object>
-			</array>
-			<object class="IBMutableOrderedSet" key="objectRecords">
-				<array key="orderedObjects">
-					<object class="IBObjectRecord">
-						<int key="objectID">0</int>
-						<array key="object" id="0"/>
-						<reference key="children" ref="334648337"/>
-						<nil key="parent"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">-2</int>
-						<reference key="object" ref="516906790"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">File's Owner</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">-1</int>
-						<reference key="object" ref="543707274"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">First Responder</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">-3</int>
-						<reference key="object" ref="363476122"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">Application</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">14</int>
-						<reference key="object" ref="53881124"/>
-						<array class="NSMutableArray" key="children">
-							<reference ref="196563190"/>
-							<reference ref="915397879"/>
-							<reference ref="154725182"/>
-						</array>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">View</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">15</int>
-						<reference key="object" ref="196563190"/>
-						<array class="NSMutableArray" key="children">
-							<reference ref="557685908"/>
-							<reference ref="660980177"/>
-							<reference ref="31372689"/>
-						</array>
-						<reference key="parent" ref="53881124"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">16</int>
-						<reference key="object" ref="557685908"/>
-						<array class="NSMutableArray" key="children">
-							<reference ref="653637384"/>
-							<reference ref="1020615924"/>
-						</array>
-						<reference key="parent" ref="196563190"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">17</int>
-						<reference key="object" ref="653637384"/>
-						<array class="NSMutableArray" key="children">
-							<reference ref="819754658"/>
-						</array>
-						<reference key="parent" ref="557685908"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">40</int>
-						<reference key="object" ref="819754658"/>
-						<reference key="parent" ref="653637384"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">34</int>
-						<reference key="object" ref="1020615924"/>
-						<array class="NSMutableArray" key="children">
-							<reference ref="971407898"/>
-						</array>
-						<reference key="parent" ref="557685908"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">37</int>
-						<reference key="object" ref="971407898"/>
-						<reference key="parent" ref="1020615924"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">19</int>
-						<reference key="object" ref="915397879"/>
-						<reference key="parent" ref="53881124"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">28</int>
-						<reference key="object" ref="154725182"/>
-						<array class="NSMutableArray" key="children">
-							<reference ref="779513454"/>
-						</array>
-						<reference key="parent" ref="53881124"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">18</int>
-						<reference key="object" ref="779513454"/>
-						<reference key="parent" ref="154725182"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">44</int>
-						<reference key="object" ref="660980177"/>
-						<reference key="parent" ref="196563190"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">45</int>
-						<reference key="object" ref="31372689"/>
-						<reference key="parent" ref="196563190"/>
-					</object>
-				</array>
-			</object>
-			<dictionary class="NSMutableDictionary" key="flattenedProperties">
-				<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="15.CustomClassName">AIAutoScrollView</string>
-				<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="16.CustomClassName">AIAlternatingRowTableView</string>
-				<string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="34.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-				<string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
-			</dictionary>
-			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
-			<nil key="activeLocalization"/>
-			<dictionary class="NSMutableDictionary" key="localizations"/>
-			<nil key="sourceID"/>
-			<int key="maxID">45</int>
-		</object>
-		<object class="IBClassDescriber" key="IBDocument.Classes">
-			<array class="NSMutableArray" key="referencedPartialClassDescriptions">
-				<object class="IBPartialClassDescription">
-					<string key="className">AIAdvancedPreferences</string>
-					<string key="superclassName">AIPreferencePane</string>
-					<dictionary class="NSMutableDictionary" key="outlets">
-						<string key="modularPane">AIModularPaneCategoryView</string>
-						<string key="shelf_splitView">KNShelfSplitView</string>
-						<string key="tableView_categories">NSTableView</string>
-					</dictionary>
-					<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<object class="IBToOneOutletInfo" key="modularPane">
-							<string key="name">modularPane</string>
-							<string key="candidateClassName">AIModularPaneCategoryView</string>
-						</object>
-						<object class="IBToOneOutletInfo" key="shelf_splitView">
-							<string key="name">shelf_splitView</string>
-							<string key="candidateClassName">KNShelfSplitView</string>
-						</object>
-						<object class="IBToOneOutletInfo" key="tableView_categories">
-							<string key="name">tableView_categories</string>
-							<string key="candidateClassName">NSTableView</string>
-						</object>
-					</dictionary>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/AIAdvancedPreferences.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">AIAlternatingRowTableView</string>
-					<string key="superclassName">NSTableView</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/AIAlternatingRowTableView.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">AIAutoScrollView</string>
-					<string key="superclassName">NSScrollView</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/AIAutoScrollView.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">AIModularPane</string>
-					<string key="superclassName">NSObject</string>
-					<object class="NSMutableDictionary" key="actions">
-						<string key="NS.key.0">changePreference:</string>
-						<string key="NS.object.0">id</string>
-					</object>
-					<object class="NSMutableDictionary" key="actionInfosByName">
-						<string key="NS.key.0">changePreference:</string>
-						<object class="IBActionInfo" key="NS.object.0">
-							<string key="name">changePreference:</string>
-							<string key="candidateClassName">id</string>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="outlets">
-						<string key="NS.key.0">view</string>
-						<string key="NS.object.0">NSView</string>
-					</object>
-					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<string key="NS.key.0">view</string>
-						<object class="IBToOneOutletInfo" key="NS.object.0">
-							<string key="name">view</string>
-							<string key="candidateClassName">NSView</string>
-						</object>
-					</object>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/AIModularPane.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">AIModularPaneCategoryView</string>
-					<string key="superclassName">NSView</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/AIModularPaneCategoryView.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">AIPreferencePane</string>
-					<string key="superclassName">AIModularPane</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/AIPreferencePane.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">KNShelfSplitView</string>
-					<string key="superclassName">NSView</string>
-					<object class="NSMutableDictionary" key="actions">
-						<string key="NS.key.0">toggleShelf:</string>
-						<string key="NS.object.0">id</string>
-					</object>
-					<object class="NSMutableDictionary" key="actionInfosByName">
-						<string key="NS.key.0">toggleShelf:</string>
-						<object class="IBActionInfo" key="NS.object.0">
-							<string key="name">toggleShelf:</string>
-							<string key="candidateClassName">id</string>
-						</object>
-					</object>
-					<dictionary class="NSMutableDictionary" key="outlets">
-						<string key="contentView">NSView</string>
-						<string key="delegate">id</string>
-						<string key="shelfView">NSView</string>
-						<string key="target">id</string>
-					</dictionary>
-					<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<object class="IBToOneOutletInfo" key="contentView">
-							<string key="name">contentView</string>
-							<string key="candidateClassName">NSView</string>
-						</object>
-						<object class="IBToOneOutletInfo" key="delegate">
-							<string key="name">delegate</string>
-							<string key="candidateClassName">id</string>
-						</object>
-						<object class="IBToOneOutletInfo" key="shelfView">
-							<string key="name">shelfView</string>
-							<string key="candidateClassName">NSView</string>
-						</object>
-						<object class="IBToOneOutletInfo" key="target">
-							<string key="name">target</string>
-							<string key="candidateClassName">id</string>
-						</object>
-					</dictionary>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/KNShelfSplitView.h</string>
-					</object>
-				</object>
-			</array>
-		</object>
-		<int key="IBDocument.localizationMode">0</int>
-		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
-		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
-			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
-			<real value="1060" key="NS.object.0"/>
-		</object>
-		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
-			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
-			<real value="1060" key="NS.object.0"/>
-		</object>
-		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
-			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
-			<real value="3200" key="NS.object.0"/>
-		</object>
-		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
-		<int key="IBDocument.defaultPropertyAccessControl">3</int>
-	</data>
-</archive>
diff -r 3f57100aabf9 -r 5b434bbcd80c Source/AIInterfaceController.m
--- a/Source/AIInterfaceController.m	Mon Aug 29 17:56:00 2011 +0300
+++ b/Source/AIInterfaceController.m	Mon Aug 20 20:30:39 2012 -0400
@@ -43,7 +43,6 @@
 #import <Adium/AISortController.h>
 #import "AIMessageWindowController.h"
 #import "AIMessageTabViewItem.h"
-#import "KNShelfSplitview.h"
 #import <Adium/AIContactList.h>
 #import "AIListOutlineView.h"
 
diff -r 3f57100aabf9 -r 5b434bbcd80c Source/AIPreferenceContainer.h
--- a/Source/AIPreferenceContainer.h	Mon Aug 29 17:56:00 2011 +0300
+++ b/Source/AIPreferenceContainer.h	Mon Aug 20 20:30:39 2012 -0400
@@ -19,24 +19,16 @@
 @interface AIPreferenceContainer : NSObject {
 	NSString			*group;
 	AIListObject		*object;
-
 	NSMutableDictionary	*prefs;
-	NSMutableDictionary	*prefsWithDefaults;
-
 	NSMutableDictionary	*defaults;
 	NSInteger			preferenceChangeDelays;
-	
-	NSMutableDictionary **myGlobalPrefs;
-	NSInteger			*myUsersOfGlobalPrefs;
-	NSTimer				**myTimerForSavingGlobalPrefs;
-	NSString			*globalPrefsName;
 }
 
-+ (AIPreferenceContainer *)preferenceContainerForGroup:(NSString *)inGroup object:(AIListObject *)inObject;
++ (AIPreferenceContainer *)preferenceContainerForGroup:(NSString *)inGroup object:(AIListObject *)inObject create:(BOOL)create;
 + (void)preferenceControllerWillClose;
 
 //Return a dictionary of preferences and defaults, appropriately merged together
-- (NSDictionary *)dictionary;
+ at property (readonly, nonatomic) NSDictionary *dictionary;
 
 //Replace all preferences for this container with the values and keys in inPreferences
 - (void)setPreferences:(NSDictionary *)inPreferences;
@@ -50,6 +42,6 @@
 
 - (void)setPreferenceChangedNotificationsEnabled:(BOOL)inEnbaled;
 
-- (void)setGroup:(NSString *)inGroup;
+ at property (readwrite, nonatomic, copy) NSString *group;
 
 @end
diff -r 3f57100aabf9 -r 5b434bbcd80c Source/AIPreferenceContainer.m
--- a/Source/AIPreferenceContainer.m	Mon Aug 29 17:56:00 2011 +0300
+++ b/Source/AIPreferenceContainer.m	Mon Aug 20 20:30:39 2012 -0400
@@ -26,7 +26,7 @@
 - (id)initForGroup:(NSString *)inGroup object:(AIListObject *)inObject;
 - (void)save;
 @property (readonly, nonatomic) NSMutableDictionary *prefs;
-- (void) loadGlobalPrefs;
++ (void) loadGlobalPrefsForObject:(AIListObject *)object;
 
 //Lazily sets up our pref dict if needed
 - (void) setPrefValue:(id)val forKey:(id)key;
@@ -62,8 +62,39 @@
  */
 @implementation AIPreferenceContainer
 
-+ (AIPreferenceContainer *)preferenceContainerForGroup:(NSString *)inGroup object:(AIListObject *)inObject
+static NSString *globalPrefsNameForObject(AIListObject *object) {
+    if (!object) return NULL;
+    return [object isKindOfClass:[AIAccount class]] ? @"AccountPrefs" : @"ByObjectPrefs";
+}
+#define globalPrefsName globalPrefsNameForObject(object)
+
+static NSMutableDictionary **globalPrefsPtrForObject(AIListObject *object) {
+    if (!object) return NULL;
+    return [object isKindOfClass:[AIAccount class]] ? &accountPrefs : &objectPrefs;
+}
+#define myGlobalPrefs globalPrefsPtrForObject(object)
+
+static NSTimer **globalPrefsSaveTimerForObject(AIListObject *object) {
+    if (!object) return NULL;
+    return [object isKindOfClass:[AIAccount class]] ? &timer_savingOfAccountCache : &timer_savingOfObjectCache;
+}
+#define myTimerForSavingGlobalPrefs globalPrefsSaveTimerForObject(object)
+
++ (AIPreferenceContainer *)preferenceContainerForGroup:(NSString *)inGroup object:(AIListObject *)inObject create:(BOOL)create
 {
+    BOOL found = YES;
+    if (inObject) {
+        NSMutableDictionary **prefs = globalPrefsPtrForObject(inObject);
+        if (!*prefs) {
+            [self loadGlobalPrefsForObject:inObject];
+            prefs = globalPrefsPtrForObject(inObject);
+        }
+        
+        NSString *globalPrefsKey = [inObject.internalObjectID safeFilenameString];
+        found = (nil != [*prefs objectForKey:globalPrefsKey]);
+    }
+
+    if (inObject && !found && !create) return nil;
 	return [[[self alloc] initForGroup:inGroup object:inObject] autorelease];
 }
 
@@ -97,18 +128,6 @@
 	if ((self = [super init])) {
 		group = [inGroup retain];
 		object = [inObject retain];
-		if (object) {
-			if ([object isKindOfClass:[AIAccount class]]) {
-				myGlobalPrefs = &accountPrefs;
-				myTimerForSavingGlobalPrefs = &timer_savingOfAccountCache;
-				globalPrefsName = @"AccountPrefs";
-				
-			} else {
-				myGlobalPrefs = &objectPrefs;
-				myTimerForSavingGlobalPrefs = &timer_savingOfObjectCache;
-				globalPrefsName = @"ByObjectPrefs";
-			}
-		}
 	}
 
 	return self;
@@ -116,11 +135,11 @@
 
 - (void)dealloc
 {
-	[defaults release]; defaults = nil;
+	[defaults release];
+    [prefs release];
 	[group release];
 	[object release];
-	[globalPrefsName release]; globalPrefsName = nil;
-	
+
 	[super dealloc];
 }
 
@@ -131,7 +150,7 @@
 
 #pragma mark Defaults
 
- at synthesize defaults;
+ at synthesize defaults, group;
 
 /*!
  * @brief Register defaults
@@ -143,14 +162,11 @@
 	if (!defaults) defaults = [[NSMutableDictionary alloc] init];
 	
 	[defaults addEntriesFromDictionary:inDefaults];
-	
-	//Clear the cached defaults dictionary so it will be recreated as needed
-	[prefsWithDefaults release]; prefsWithDefaults = nil;
 }
 
 #pragma mark Get and set
 
-- (void) loadGlobalPrefs
++ (void) loadGlobalPrefsForObject:(AIListObject *)object
 {
 	NSAssert(*myGlobalPrefs == nil, @"Attempting to load global prefs when they're already loaded");
 	NSString	*objectPrefsPath = [[adium.loginController.userDirectory stringByAppendingPathComponent:globalPrefsName] stringByAppendingPathExtension:@"plist"];
@@ -230,9 +246,6 @@
 		NSString	*userDirectory = adium.loginController.userDirectory;
 		
 		if (object) {
-			if (!(*myGlobalPrefs))
-				[self loadGlobalPrefs];
-
 			//For compatibility with having loaded individual object prefs from previous version of Adium, we key by the safe filename string
 			NSString *globalPrefsKey = [object.internalObjectID safeFilenameString];
 			prefs = [[*myGlobalPrefs objectForKey:globalPrefsKey] retain];
@@ -252,20 +265,13 @@
  */
 - (NSDictionary *)dictionary
 {
-	if (!prefsWithDefaults) {
-		//Add our own preferences to the defaults dictionary to get a dict with the set keys overriding the default keys
-		if (defaults) {
-			prefsWithDefaults = [defaults mutableCopy];
-			NSDictionary *prefDict = self.prefs;
-			if (prefDict)
-				[prefsWithDefaults addEntriesFromDictionary:prefDict];
-
-		} else {
-			prefsWithDefaults = [self.prefs retain];
-		}
-	}
-
-	return prefsWithDefaults;
+    NSDictionary *myPrefs = self.prefs;
+    if (!defaults) return [[myPrefs copy] autorelease];
+    
+    NSMutableDictionary *prefsWithDefaults = [defaults mutableCopy];
+    //Add our own preferences to the defaults dictionary to get a dict with the set keys overriding the default keys
+    if (myPrefs) [prefsWithDefaults addEntriesFromDictionary:myPrefs];
+    return [prefsWithDefaults autorelease];
 }
 
 /*!
@@ -276,7 +282,7 @@
 - (void)setValue:(id)value forKey:(NSString *)key
 {
 	BOOL	valueChanged = YES;
-	/* Comparing pointers, numbers, and strings is far cheapear than writing out to disk;
+	/* Comparing pointers, numbers, and strings is far cheaper than writing out to disk;
 	 * check to see if we don't need to change anything at all. However, we still want to post notifications
 	 * for observers that we were set.
 	 */
@@ -287,13 +293,6 @@
 	[self willChangeValueForKey:key];
 
 	if (valueChanged) {
-		//Clear the cached defaults dictionary so it will be recreated as needed
-		if (value)
-			[prefsWithDefaults setValue:value forKey:key];
-		else {
-			[prefsWithDefaults autorelease]; prefsWithDefaults = nil;
-		}
-		
 		[self setPrefValue:value forKey:key];		
 	}
 
@@ -309,7 +308,10 @@
 
 - (id)valueForKey:(NSString *)key
 {
-	return [[self dictionary] valueForKey:key];
+    id result = nil;
+    result = [self.prefs objectForKey:key];
+    if (!result) result = [self.defaults objectForKey:key];
+    return result;
 }
 
 /*!
@@ -328,7 +330,7 @@
 
 - (id)defaultValueForKey:(NSString *)key
 {
-	return [[self defaults] valueForKey:key];
+	return [self.defaults valueForKey:key];
 }
 
 /*!




More information about the commits mailing list