adium/adium

Merged adium-1.5.4 into adium-1.6.
adium-1.6
2012-09-13, Thijs Alkemade
1c76587d9cf9
Merged adium-1.5.4 into adium-1.6.
--- a/Adium.xcodeproj/project.pbxproj Thu Sep 13 11:41:00 2012 +0200
+++ b/Adium.xcodeproj/project.pbxproj Thu Sep 13 11:49:39 2012 +0200
@@ -1427,7 +1427,6 @@
9E124DEC07D34C7300AA91C5 /* CBGrowlAlertDetailPane.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E124DE807D34C7300AA91C5 /* CBGrowlAlertDetailPane.m */; };
9E124DEE07D34C7400AA91C5 /* NEHGrowlPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E124DEA07D34C7300AA91C5 /* NEHGrowlPlugin.m */; };
9E124DF107D34C9100AA91C5 /* GrowlAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9E124DEF07D34C9000AA91C5 /* GrowlAlert.xib */; };
- 9E124DF207D34C9100AA91C5 /* events-growl-alert.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 9E124DF007D34C9000AA91C5 /* events-growl-alert.tiff */; };
9E125C6607D3571400AA91C5 /* ESBlockingPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E125C6407D3571400AA91C5 /* ESBlockingPlugin.m */; };
9E1E1DFD0A96741500E16DFC /* LMX.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E1E1DFC0A96741500E16DFC /* LMX.framework */; };
9E1E1E270A96770C00E16DFC /* LMX.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 9E1E1DFC0A96741500E16DFC /* LMX.framework */; };
@@ -1489,6 +1488,7 @@
C6EE434615C0AA9100A4B96C /* SoundLow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EE434515C0AA9100A4B96C /* SoundLow@2x.png */; };
C6EE434C15C0AB7400A4B96C /* Flap_192@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EE434B15C0AB7400A4B96C /* Flap_192@2x.png */; };
C6EE434E15C0AB7F00A4B96C /* Awake_192@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C6EE434D15C0AB7F00A4B96C /* Awake_192@2x.png */; };
+ C6BC7F9B15DD666600C5FF52 /* events-notification.tiff in Resources */ = {isa = PBXBuildFile; fileRef = C6BC7F9A15DD666600C5FF52 /* events-notification.tiff */; };
D10A3A2B122C61EF003B5A7E /* msg-source-destination.tiff in Resources */ = {isa = PBXBuildFile; fileRef = D10A3A2A122C61EF003B5A7E /* msg-source-destination.tiff */; };
EE147A6D0896B18800A21377 /* ABSearch.png in Resources */ = {isa = PBXBuildFile; fileRef = EE147A6C0896B18700A21377 /* ABSearch.png */; };
EE147A790896B32400A21377 /* ABSearch.xib in Resources */ = {isa = PBXBuildFile; fileRef = EE147A780896B32400A21377 /* ABSearch.xib */; };
@@ -3399,6 +3399,8 @@
34D369ED08E7544D00E15E40 /* AIColorPickerSliders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIColorPickerSliders.h; path = "Frameworks/Adium Framework/Source/AIColorPickerSliders.h"; sourceTree = "<group>"; };
34D369EE08E7544D00E15E40 /* AIColorPickerSliders.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIColorPickerSliders.m; path = "Frameworks/Adium Framework/Source/AIColorPickerSliders.m"; sourceTree = "<group>"; };
34D43504051ADC10003B2F21 /* DualWindowDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = DualWindowDefaults.plist; path = "Plugins/Dual Window Interface/DualWindowDefaults.plist"; sourceTree = "<group>"; };
+ 34D7F1E815F85DD300F32F9B /* ChatCyclingDefaults-Old.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "ChatCyclingDefaults-Old.plist"; path = "Resources/ChatCyclingDefaults-Old.plist"; sourceTree = "<group>"; };
+ 34D7F1E915F85DD300F32F9B /* ChatCyclingDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = ChatCyclingDefaults.plist; path = Resources/ChatCyclingDefaults.plist; sourceTree = "<group>"; };
34D8153013B663650022C8C4 /* AIFacebookXMPPAccount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIFacebookXMPPAccount.h; path = "Plugins/Purple Service/AIFacebookXMPPAccount.h"; sourceTree = "<group>"; };
34D8153113B663650022C8C4 /* AIFacebookXMPPAccount.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIFacebookXMPPAccount.m; path = "Plugins/Purple Service/AIFacebookXMPPAccount.m"; sourceTree = "<group>"; };
34D8153313B663650022C8C4 /* AIFacebookXMPPAccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIFacebookXMPPAccountViewController.h; path = "Plugins/Purple Service/AIFacebookXMPPAccountViewController.h"; sourceTree = "<group>"; };
@@ -4466,7 +4468,6 @@
9E124DE907D34C7300AA91C5 /* NEHGrowlPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NEHGrowlPlugin.h; path = Source/NEHGrowlPlugin.h; sourceTree = "<group>"; };
9E124DEA07D34C7300AA91C5 /* NEHGrowlPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NEHGrowlPlugin.m; path = Source/NEHGrowlPlugin.m; sourceTree = "<group>"; };
9E124DEF07D34C9000AA91C5 /* GrowlAlert.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = GrowlAlert.xib; path = Resources/GrowlAlert.xib; sourceTree = "<group>"; };
- 9E124DF007D34C9000AA91C5 /* events-growl-alert.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "events-growl-alert.tiff"; path = "Resources/events-growl-alert.tiff"; sourceTree = "<group>"; };
9E125C6307D3571400AA91C5 /* ESBlockingPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ESBlockingPlugin.h; path = Source/ESBlockingPlugin.h; sourceTree = "<group>"; };
9E125C6407D3571400AA91C5 /* ESBlockingPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ESBlockingPlugin.m; path = Source/ESBlockingPlugin.m; sourceTree = "<group>"; };
9E1E1DFC0A96741500E16DFC /* LMX.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LMX.framework; path = Frameworks/LMX.framework; sourceTree = "<group>"; };
@@ -4548,6 +4549,7 @@
C6EE434515C0AA9100A4B96C /* SoundLow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "SoundLow@2x.png"; path = "Resources/SoundLow@2x.png"; sourceTree = "<group>"; };
C6EE434B15C0AB7400A4B96C /* Flap_192@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Flap_192@2x.png"; path = "Resources/Flap_192@2x.png"; sourceTree = "<group>"; };
C6EE434D15C0AB7F00A4B96C /* Awake_192@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Awake_192@2x.png"; path = "Resources/Awake_192@2x.png"; sourceTree = "<group>"; };
+ C6BC7F9A15DD666600C5FF52 /* events-notification.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "events-notification.tiff"; path = "Resources/events-notification.tiff"; sourceTree = "<group>"; };
D10A3A2A122C61EF003B5A7E /* msg-source-destination.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "msg-source-destination.tiff"; path = "Resources/msg-source-destination.tiff"; sourceTree = "<group>"; };
D182F1B411DFF23700E33AE2 /* sk_SK */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sk_SK; path = sk_SK.lproj/InfoPlist.strings; sourceTree = "<group>"; };
D182F1B611DFF23700E33AE2 /* sk_SK */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sk_SK; path = sk_SK.lproj/schema.strings; sourceTree = "<group>"; };
@@ -6693,6 +6695,8 @@
children = (
34BFE20007E8E11500AD984D /* AIChatCyclingPlugin.m */,
34BFE20107E8E11500AD984D /* AIChatCyclingPlugin.h */,
+ 34D7F1E815F85DD300F32F9B /* ChatCyclingDefaults-Old.plist */,
+ 34D7F1E915F85DD300F32F9B /* ChatCyclingDefaults.plist */,
);
name = "Chat Cycling";
sourceTree = "<group>";
@@ -7269,10 +7273,10 @@
children = (
9E124DE707D34C7300AA91C5 /* CBGrowlAlertDetailPane.h */,
9E124DE807D34C7300AA91C5 /* CBGrowlAlertDetailPane.m */,
- 9E124DEF07D34C9000AA91C5 /* GrowlAlert.xib */,
- 9E124DF007D34C9000AA91C5 /* events-growl-alert.tiff */,
9E124DE907D34C7300AA91C5 /* NEHGrowlPlugin.h */,
9E124DEA07D34C7300AA91C5 /* NEHGrowlPlugin.m */,
+ 9E124DEF07D34C9000AA91C5 /* GrowlAlert.xib */,
+ C6BC7F9A15DD666600C5FF52 /* events-notification.tiff */,
);
name = Growl;
sourceTree = "<group>";
@@ -9571,7 +9575,6 @@
342838EE07D2D004004F01C9 /* Shared Dock Icon Images in Resources */,
4BB5B78207D2DC4900CFE06F /* pref-status.tiff in Resources */,
9E124DF107D34C9100AA91C5 /* GrowlAlert.xib in Resources */,
- 9E124DF207D34C9100AA91C5 /* events-growl-alert.tiff in Resources */,
34A6FB2607D6F97B00972830 /* EventSoundContactAlert.xib in Resources */,
34A6FB2D07D6F98600972830 /* events-sound-alert.tiff in Resources */,
34A6FB2E07D6F98600972830 /* SoundFileIcon.png in Resources */,
@@ -9764,6 +9767,7 @@
C6B545A815D338EE0005F1F8 /* SoundFileIcon@2x.png in Resources */,
C6B545AA15D3390F0005F1F8 /* ABSearch@2x.png in Resources */,
C61AFA9A15DD43C80001EDEF /* AboutDialog_bg@2x.png in Resources */,
+ C6BC7F9B15DD666600C5FF52 /* events-notification.tiff in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
--- a/ChangeLogs/Changes.txt Thu Sep 13 11:41:00 2012 +0200
+++ b/ChangeLogs/Changes.txt Thu Sep 13 11:49:39 2012 +0200
@@ -1,11 +1,12 @@
Adium Version History
-----------------------
Version 1.5.4 (XX/XX/XXXX)
+ * Changed the default tab switching shortcuts for new users to Control-Tab/Control-Shift-Tab, to match Safari. (#16102)
+ * Limit the tracking of the last seen time to contacts who are on your contact list.
* Updated the included Growl SDK to 2.0, adding support for Notification Center on 10.8 if Growl is not installed. (#15867)
* Updated libotr to 3.2.1, fixing a security vulnerability. (#16122)
* Fixed a problem where accepting a group chat invite on Sametime 8.5.1 would crash Adium. (Jere Krischel and Jonathan Rice) (#16114)
- * Limit the tracking of the last seen time to contacts who are on your contact list.
- * Changed the default tab switching shortcuts for new users to Control-Tab/Control-Shift-Tab, to match Safari. (#16102)
+ * Fixed a problem where accepting a group chat invite on HipChat's XMPP server would crash Adium. (#16007)
Version 1.5.3 (8/12/2012)
--- a/Frameworks/Adium Framework/Source/AIAdiumProtocol.h Thu Sep 13 11:41:00 2012 +0200
+++ b/Frameworks/Adium Framework/Source/AIAdiumProtocol.h Thu Sep 13 11:49:39 2012 +0200
@@ -61,6 +61,7 @@
@property (readonly, nonatomic) NSString *cachesPath;
- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
+- (NSString *)earliestLaunchedAdiumVersion;
@property (readonly, nonatomic) BOOL isQuitting;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/ChatCyclingDefaults-Old.plist Thu Sep 13 11:49:39 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Tab Switching Keys</key>
+ <integer>0</integer>
+</dict>
+</plist>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/ChatCyclingDefaults.plist Thu Sep 13 11:49:39 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Tab Switching Keys</key>
+ <integer>5</integer>
+</dict>
+</plist>
--- a/Resources/GrowlAlert.xib Thu Sep 13 11:41:00 2012 +0200
+++ b/Resources/GrowlAlert.xib Thu Sep 13 11:49:39 2012 +0200
@@ -2,30 +2,33 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
- <string key="IBDocument.SystemVersion">11A511</string>
- <string key="IBDocument.InterfaceBuilderVersion">1617</string>
- <string key="IBDocument.AppKitVersion">1138</string>
- <string key="IBDocument.HIToolboxVersion">566.00</string>
+ <string key="IBDocument.SystemVersion">12B19</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2549</string>
+ <string key="IBDocument.AppKitVersion">1187</string>
+ <string key="IBDocument.HIToolboxVersion">624.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">1617</string>
+ <string key="NS.object.0">2549</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
- <string>NSTextField</string>
- <string>NSTextFieldCell</string>
+ <string>NSButton</string>
+ <string>NSButtonCell</string>
+ <string>NSCustomObject</string>
+ <string>NSCustomView</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
<string>NSPopUpButton</string>
- <string>NSCustomView</string>
- <string>NSButtonCell</string>
<string>NSPopUpButtonCell</string>
- <string>NSButton</string>
- <string>NSCustomObject</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
- <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
+ <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="907618351">
<object class="NSCustomObject" id="142383858">
<string key="NSClassName">CBGrowlAlertDetailPane</string>
@@ -43,22 +46,22 @@
<object class="NSButton" id="1067699754">
<reference key="NSNextResponder" ref="968514289"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{160, -2}, {187, 18}}</string>
+ <string key="NSFrame">{{160, 27}, {187, 18}}</string>
<reference key="NSSuperview" ref="968514289"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView"/>
+ <reference key="NSNextKeyView" ref="966812186"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1053890224">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Time stamp</string>
+ <string key="NSContents">Show time stamp</string>
<object class="NSFont" key="NSSupport" id="383696161">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="1067699754"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<object class="NSButtonImageSource" key="NSAlternateImage" id="205577449">
<string key="NSImageName">NSSwitch</string>
@@ -68,22 +71,23 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="175101245">
<reference key="NSNextResponder" ref="968514289"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{160, 20}, {59, 18}}</string>
+ <string key="NSFrame">{{160, 49}, {155, 18}}</string>
<reference key="NSSuperview" ref="968514289"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1067699754"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="889524446">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Sticky</string>
+ <string key="NSContents">Show until dismissed</string>
<reference key="NSSupport" ref="383696161"/>
<reference key="NSControlView" ref="175101245"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSAlternateImage" ref="205577449"/>
<string key="NSAlternateContents"/>
@@ -91,19 +95,20 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="966812186">
<reference key="NSNextResponder" ref="968514289"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{-3, 46}, {161, 17}}</string>
+ <string key="NSFrame">{{-3, 3}, {161, 17}}</string>
<reference key="NSSuperview" ref="968514289"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="743847431"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="225800914">
- <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">71304192</int>
- <string key="NSContents">Priority:</string>
+ <string key="NSContents">Growl priority:</string>
<reference key="NSSupport" ref="383696161"/>
<reference key="NSControlView" ref="966812186"/>
<object class="NSColor" key="NSBackgroundColor">
@@ -125,21 +130,22 @@
</object>
</object>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="743847431">
<reference key="NSNextResponder" ref="968514289"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{159, 40}, {189, 26}}</string>
+ <string key="NSFrame">{{160, -3}, {189, 26}}</string>
<reference key="NSSuperview" ref="968514289"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="175101245"/>
+ <reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="346077233">
- <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="383696161"/>
<reference key="NSControlView" ref="743847431"/>
- <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -197,12 +203,13 @@
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
- <string key="NSFrameSize">{549, 64}</string>
+ <string key="NSFrameSize">{549, 66}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="966812186"/>
+ <reference key="NSNextKeyView" ref="175101245"/>
<object class="NSMutableString" key="NSClassName">
<characters key="NS.bytes">NSView</characters>
</object>
@@ -298,10 +305,10 @@
<int key="objectID">5</int>
<reference key="object" ref="968514289"/>
<array class="NSMutableArray" key="children">
- <reference ref="966812186"/>
- <reference ref="743847431"/>
<reference ref="175101245"/>
<reference ref="1067699754"/>
+ <reference ref="743847431"/>
+ <reference ref="966812186"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">View</string>
@@ -415,7 +422,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">32</int>
+ <int key="maxID">37</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -524,6 +531,17 @@
<object class="IBPartialClassDescription">
<string key="className">CBGrowlAlertDetailPane</string>
<string key="superclassName">AIActionDetailsPane</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>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="checkBox_sticky">NSButton</string>
<string key="checkBox_timestamp">NSButton</string>
@@ -553,6 +571,24 @@
<string key="minorKey">./Classes/CBGrowlAlertDetailPane.h</string>
</object>
</object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">selectServiceType:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">selectServiceType:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">selectServiceType:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/NSObject.h</string>
+ </object>
+ </object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
@@ -568,8 +604,8 @@
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <string key="NSMenuCheckmark">{9, 8}</string>
- <string key="NSMenuMixedState">{7, 2}</string>
+ <string key="NSMenuCheckmark">{11, 11}</string>
+ <string key="NSMenuMixedState">{10, 3}</string>
</dictionary>
</data>
</archive>
Binary file Resources/events-growl-alert.tiff has changed
Binary file Resources/events-notification.tiff has changed
--- a/Source/AIAdium.m Thu Sep 13 11:41:00 2012 +0200
+++ b/Source/AIAdium.m Thu Sep 13 11:49:39 2012 +0200
@@ -72,6 +72,8 @@
#define ALWAYS_RUN_SETUP_WIZARD FALSE
+#define AIEarliestLaunchedAdiumVersionKey @"AIEarliestLaunchedAdiumVersion"
+
static NSString *prefsCategory;
@interface AIAdium ()
@@ -137,6 +139,8 @@
andSelector:@selector(handleURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
+
+ [self noteEarliestLaunchedAdiumVersion];
}
- (void)handleURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
@@ -990,6 +994,43 @@
return [NSApplication sharedApplication];
}
+- (NSString *)earliestLaunchedAdiumVersion
+{
+ return [[NSUserDefaults standardUserDefaults] stringForKey:AIEarliestLaunchedAdiumVersionKey];
+}
+
+- (void)noteEarliestLaunchedAdiumVersion
+{
+ if (![self earliestLaunchedAdiumVersion]) {
+ /* Either Adium has never run before on this machine, or the version which did was < 1.5.4, as that's when we started
+ * noting the earliest run version
+ */
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Adium 1.3.3:Reimported Spotlight Logs"]) {
+ /* This is set by the logging plugin in every version of Adium from 1.3.3 through 1.5.3, so if it's already set,
+ * Adium 1.3.3 through 1.5.3 have launched previously. Assume 1.5.3 since we can't tell the difference.
+ */
+ [[NSUserDefaults standardUserDefaults] setObject:@"1.5.3"
+ forKey:AIEarliestLaunchedAdiumVersionKey];
+
+ } else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Adium 1.2.4 deleted blist.xml"]) {
+ /* similar story, so now we're between 1.2.4 and 1.3.2 */
+ [[NSUserDefaults standardUserDefaults] setObject:@"1.3.2"
+ forKey:AIEarliestLaunchedAdiumVersionKey];
+
+ } else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Adium 1.0.3 moved to libpurple"]) {
+ /* similar story, so now we're between 1.0.3 and 1.2.3. Really, you're just now upgrading?! */
+ [[NSUserDefaults standardUserDefaults] setObject:@"1.2.3"
+ forKey:AIEarliestLaunchedAdiumVersionKey];
+ } else {
+ /* This user has never run Adium, at least not since 1.0.3. Record the current version */
+ [[NSUserDefaults standardUserDefaults] setObject:[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]
+ forKey:AIEarliestLaunchedAdiumVersionKey];
+
+ }
+
+ }
+}
+
#pragma mark Scripting
- (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key {
BOOL handleKey = NO;
--- a/Source/AIChatCyclingPlugin.m Thu Sep 13 11:41:00 2012 +0200
+++ b/Source/AIChatCyclingPlugin.m Thu Sep 13 11:49:39 2012 +0200
@@ -19,10 +19,14 @@
#import <Adium/AIMenuControllerProtocol.h>
#import "ESGeneralPreferencesPlugin.h"
#import <AIUtilities/AIMenuAdditions.h>
+#import <AIUtilities/AIDictionaryAdditions.h>
#define PREVIOUS_MESSAGE_MENU_TITLE AILocalizedString(@"Previous Chat",nil)
#define NEXT_MESSAGE_MENU_TITLE AILocalizedString(@"Next Chat",nil)
+#define DEFAULT_CHAT_CYCLING_PREFS @"ChatCyclingDefaults"
+#define OLD_DEFAULT_CHAT_CYCLING_PREFS @"ChatCyclingDefaults-Old"
+
/*!
* @class AIChatCyclingPlugin
* @brief Component to manage the chat cycling menu items
@@ -50,6 +54,15 @@
action:@selector(nextChat:)
keyEquivalent:@""];
[menuController addMenuItem:nextChatMenuItem toLocation:LOC_Window_Commands];
+
+ /* Adium 1.5.4+ use the new defaults for chat switching, ctrl+tab, to match Safari's default user-visible behavior */
+ NSDictionary *defaults = [NSDictionary dictionaryNamed:(([adium compareVersion:adium.earliestLaunchedAdiumVersion
+ toVersion:@"1.5.4"] == NSOrderedAscending) ?
+ OLD_DEFAULT_CHAT_CYCLING_PREFS :
+ DEFAULT_CHAT_CYCLING_PREFS)
+ forClass:[self class]];
+ [adium.preferenceController registerDefaults:defaults
+ forGroup:PREF_GROUP_CHAT_CYCLING];
//Prefs
[adium.preferenceController registerPreferenceObserver:self forGroup:PREF_GROUP_CHAT_CYCLING];
--- a/Source/AILogViewerWindowController.m Thu Sep 13 11:41:00 2012 +0200
+++ b/Source/AILogViewerWindowController.m Thu Sep 13 11:49:39 2012 +0200
@@ -503,7 +503,7 @@
}
}
--(void)rebuildIndices
+- (void)rebuildIndices
{
//Rebuild the 'global' log indexes
[logFromGroupDict release]; logFromGroupDict = [[NSMutableDictionary alloc] init];
@@ -1933,16 +1933,27 @@
- (void)tableViewSelectionDidChangeDelayed
{
if (!ignoreSelectionChange) {
- NSArray *selectedLogs;
+ NSArray *selectedLogs = nil;
//Update the displayed log
automaticSearch = NO;
[resultsLock lock];
- selectedLogs = [tableView_results selectedItemsFromArray:currentSearchResults];
+ @try {
+ /* If currentSearchResults is out of sync with the data of tableView_results, this could throw an exception.
+ * Catching it is far more straightforward than preventing that possibility without breaking our re-selection of
+ * selected search results as the table view reloads when new results come in.
+ */
+ selectedLogs = [tableView_results selectedItemsFromArray:currentSearchResults];
+ } @catch (NSException *e) {
+
+ } @finally {
+
+ }
[resultsLock unlock];
- [self displayLogs:selectedLogs];
+ if (selectedLogs)
+ [self displayLogs:selectedLogs];
}
}
--- a/Source/CBGrowlAlertDetailPane.m Thu Sep 13 11:41:00 2012 +0200
+++ b/Source/CBGrowlAlertDetailPane.m Thu Sep 13 11:49:39 2012 +0200
@@ -58,11 +58,16 @@
{
[super viewDidLoad];
- [checkBox_sticky setLocalizedString:AILocalizedString(@"Sticky","Growl contact alert label")];
+ [checkBox_sticky setLocalizedString:AILocalizedString(@"Show until dismissed","Growl contact alert label")];
[checkBox_timestamp setLocalizedString:AILocalizedString(@"Show time stamp", "Growl contact alert label")];
- [label_priority setLocalizedString:AILocalizedString(@"Priority:", "Priority label for Growl")];
+ [label_priority setLocalizedString:AILocalizedString(@"Growl priority:", "Priority label for Growl")];
[popUp_priority setMenu:[self priorityMenu]];
+
+ BOOL isGrowlRunning = [GrowlApplicationBridge isGrowlRunning];
+
+ [popUp_priority setEnabled:isGrowlRunning];
+ [label_priority setEnabled:isGrowlRunning];
}
/*!
--- a/Source/NEHGrowlPlugin.m Thu Sep 13 11:41:00 2012 +0200
+++ b/Source/NEHGrowlPlugin.m Thu Sep 13 11:49:39 2012 +0200
@@ -39,16 +39,10 @@
//#define GROWL_DEBUG 1
-#define GROWL_ALERT AILocalizedString(@"Display a Growl notification",nil)
-#define GROWL_STICKY_ALERT AILocalizedString(@"Display a sticky Growl notification",nil)
-#define GROWL_STICKY_TIME_STAMP_ALERT AILocalizedString(@"Display a sticky Growl notification with a time stamp", nil)
-#define GROWL_TIME_STAMP_ALERT AILocalizedString(@"Display a Growl notification with a time stamp", nil)
-
-#define GROWL_INSTALLATION_WINDOW_TITLE AILocalizedString(@"Growl Installation Recommended", "Growl installation window title")
-#define GROWL_UPDATE_WINDOW_TITLE AILocalizedString(@"Growl Update Available", "Growl update window title")
-
-#define GROWL_INSTALLATION_EXPLANATION AILocalizedString(@"Adium uses the Growl notification system to provide a configurable interface to display status changes, incoming messages and more.\n\nIt is strongly recommended that you allow Adium to automatically install Growl; no download is required.","Growl installation explanation")
-#define GROWL_UPDATE_EXPLANATION AILocalizedString(@"Adium uses the Growl notification system to provide a configurable interface to display status changes, incoming messages and more.\n\nThis release of Adium includes an updated version of Growl. It is strongly recommended that you allow Adium to automatically update Growl; no download is required.","Growl update explanation")
+#define GROWL_ALERT AILocalizedString(@"Display a notification",nil)
+#define GROWL_STICKY_ALERT AILocalizedString(@"Display a notification until dismissed",nil)
+#define GROWL_STICKY_TIME_STAMP_ALERT AILocalizedString(@"Display a notification with a time stamp until dismissed", nil)
+#define GROWL_TIME_STAMP_ALERT AILocalizedString(@"Display a notification with a time stamp", nil)
#define GROWL_TEXT_SIZE 11
@@ -183,7 +177,7 @@
*/
- (NSImage *)imageForActionID:(NSString *)actionID
{
- return [NSImage imageNamed:@"events-growl-alert" forClass:[self class]];
+ return [NSImage imageNamed:@"events-notification" forClass:[self class]];
}
/*!
@@ -701,73 +695,4 @@
[NSApp activateIgnoringOtherApps:YES];
}
-/*!
- * @brief The title of the window shown if Growl needs to be installed
- */
-- (NSString *)growlInstallationWindowTitle
-{
- return GROWL_INSTALLATION_WINDOW_TITLE;
-}
-
-/*!
- * @brief The title of the window shown if Growl needs to be updated
- */
-- (NSString *)growlUpdateWindowTitle
-{
- return GROWL_UPDATE_WINDOW_TITLE;
-}
-
-/*!
- * @brief The body of the window shown if Growl needs to be installed
- *
- * This method calls _growlInformationForUpdate.
- */
-- (NSAttributedString *)growlInstallationInformation
-{
- return [self _growlInformationForUpdate:NO];
-}
-
-/*!
- * @brief The body of the window shown if Growl needs to be update
- *
- * This method calls _growlInformationForUpdate.
- */
-- (NSAttributedString *)growlUpdateInformation
-{
- return [self _growlInformationForUpdate:YES];
-}
-
-/*!
- * @brief Returns the body text for the window displayed when Growl needs to be installed or updated
- *
- * @param isUpdate YES generates the message for the update window, NO likewise for the install window.
- */
-- (NSAttributedString *)_growlInformationForUpdate:(BOOL)isUpdate
-{
- NSMutableAttributedString *growlInfo;
-
- //Start with the window title, centered and bold
- NSMutableParagraphStyle *centeredStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease];
- [centeredStyle setAlignment:NSCenterTextAlignment];
-
- growlInfo = [[NSMutableAttributedString alloc] initWithString:(isUpdate ? GROWL_UPDATE_WINDOW_TITLE : GROWL_INSTALLATION_WINDOW_TITLE)
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- centeredStyle,NSParagraphStyleAttributeName,
- [NSFont boldSystemFontOfSize:GROWL_TEXT_SIZE], NSFontAttributeName,
- nil]];
- //Skip a line
- [[growlInfo mutableString] appendString:@"\n\n"];
-
- //Now provide a default explanation
- NSAttributedString *defaultExplanation;
- defaultExplanation = [[[NSAttributedString alloc] initWithString:(isUpdate ? GROWL_UPDATE_EXPLANATION : GROWL_INSTALLATION_EXPLANATION)
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont systemFontOfSize:GROWL_TEXT_SIZE], NSFontAttributeName,
- nil]] autorelease];
-
- [growlInfo appendAttributedString:defaultExplanation];
-
- return [growlInfo autorelease];
-}
-
@end