adium 5266:5ef1c662a3b6: The warning bar hides and reappears pro...

commits at adium.im commits at adium.im
Wed Jan 23 01:50:53 UTC 2013


details:	http://hg.adium.im/adium/rev/5ef1c662a3b6
revision:	5266:5ef1c662a3b6
branch:		libotr4.0.0
author:		Thijs Alkemade <me at thijsalkema.de>
date:		Wed Jan 23 02:50:43 2013 +0100

The warning bar hides and reappears properly now.

diffs (308 lines):

diff -r cf9fd616e5e2 -r 5ef1c662a3b6 Source/AIOTRTopBarLoggingWarningController.m
--- a/Source/AIOTRTopBarLoggingWarningController.m	Wed Jan 23 02:24:33 2013 +0100
+++ b/Source/AIOTRTopBarLoggingWarningController.m	Wed Jan 23 02:50:43 2013 +0100
@@ -15,8 +15,11 @@
  */
 
 #import "AIOTRTopBarLoggingWarningController.h"
+#import "AIMessageViewController.h"
 #import <Adium/AIPreferenceControllerProtocol.h>
 
+#import "AILoggerPlugin.h"
+
 @implementation AIOTRTopBarLoggingWarningController
 
 - (id)init
@@ -35,14 +38,61 @@
 																 green:.95
 																  blue:.5
 																 alpha:1.0];
+		
+		[adium.preferenceController registerPreferenceObserver:self
+													  forGroup:PREF_GROUP_LOGGING];
     }
     
     return self;
 }
 
+- (void)dealloc
+{
+	[[NSNotificationCenter defaultCenter] removeObserver:self];
+	[adium.preferenceController unregisterPreferenceObserver:self];
+	
+	[super dealloc];
+}
+
+- (void)preferencesChangedForGroup:(NSString *)group key:(NSString *)key object:(AIListObject *)object preferenceDict:(NSDictionary *)prefDict firstTime:(BOOL)firstTime
+{
+	if ([key isEqualToString:KEY_LOGGER_SECURE_CHATS] || [key isEqualToString:KEY_LOGGER_CERTAIN_ACCOUNTS]
+		|| [key isEqualToString:KEY_LOGGER_OBJECT_DISABLE]) {
+		if (chat.shouldLog) {
+			[owner unhideTopBarController:self];
+		} else {
+			[owner hideTopBarController:self];
+		}
+	}
+}
+
 - (IBAction)configureLogging:(id)sender
 {
 	[adium.preferenceController openPreferencesToCategoryWithIdentifier:@"Messages"];
 }
 
+- (void)chatStatusChanged:(NSNotification *)notification
+{
+    NSArray	*modifiedKeys = [[notification userInfo] objectForKey:@"Keys"];
+	
+    if ([modifiedKeys containsObject:@"securityDetails"]) {
+		if ([[[chat securityDetails] objectForKey:@"EncryptionStatus"] integerValue] == EncryptionStatus_None
+			|| !chat.shouldLog) {
+			[owner removeTopBarController:self];
+		}
+    }
+}
+
+- (void)setChat:(AIChat *)inChat
+{
+	[[NSNotificationCenter defaultCenter] removeObserver:self];
+	
+	[chat release];
+	chat = [inChat retain];
+	
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chatStatusChanged:)
+                                                 name:Chat_StatusChanged
+                                               object:chat];
+}
+
 @end
diff -r cf9fd616e5e2 -r 5ef1c662a3b6 Source/AIOTRTopBarLoggingWarningController.xib
--- a/Source/AIOTRTopBarLoggingWarningController.xib	Wed Jan 23 02:24:33 2013 +0100
+++ b/Source/AIOTRTopBarLoggingWarningController.xib	Wed Jan 23 02:50:43 2013 +0100
@@ -35,24 +35,24 @@
 			<object class="NSCustomObject" id="1004">
 				<string key="NSClassName">NSApplication</string>
 			</object>
-			<object class="NSCustomView" id="124609527">
+			<object class="NSCustomView" id="495947813">
 				<reference key="NSNextResponder"/>
 				<int key="NSvFlags">266</int>
 				<array class="NSMutableArray" key="NSSubviews">
-					<object class="NSCustomView" id="242495460">
-						<reference key="NSNextResponder" ref="124609527"/>
+					<object class="NSCustomView" id="715919500">
+						<reference key="NSNextResponder" ref="495947813"/>
 						<int key="NSvFlags">290</int>
 						<array class="NSMutableArray" key="NSSubviews">
-							<object class="NSButton" id="217857655">
-								<reference key="NSNextResponder" ref="242495460"/>
+							<object class="NSButton" id="840528027">
+								<reference key="NSNextResponder" ref="715919500"/>
 								<int key="NSvFlags">265</int>
 								<string key="NSFrame">{{401, 4}, {72, 19}}</string>
-								<reference key="NSSuperview" ref="242495460"/>
+								<reference key="NSSuperview" ref="715919500"/>
 								<reference key="NSWindow"/>
 								<reference key="NSNextKeyView"/>
 								<string key="NSReuseIdentifierKey">_NS:9</string>
 								<bool key="NSEnabled">YES</bool>
-								<object class="NSButtonCell" key="NSCell" id="117192799">
+								<object class="NSButtonCell" key="NSCell" id="227781480">
 									<int key="NSCellFlags">-2080374784</int>
 									<int key="NSCellFlags2">134217728</int>
 									<string key="NSContents">Configure</string>
@@ -62,7 +62,7 @@
 										<int key="NSfFlags">16</int>
 									</object>
 									<string key="NSCellIdentifier">_NS:9</string>
-									<reference key="NSControlView" ref="217857655"/>
+									<reference key="NSControlView" ref="840528027"/>
 									<int key="NSButtonFlags">-2038153216</int>
 									<int key="NSButtonFlags2">164</int>
 									<string key="NSAlternateContents"/>
@@ -72,26 +72,26 @@
 								</object>
 								<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
 							</object>
-							<object class="NSTextField" id="36830098">
-								<reference key="NSNextResponder" ref="242495460"/>
+							<object class="NSTextField" id="49463977">
+								<reference key="NSNextResponder" ref="715919500"/>
 								<int key="NSvFlags">268</int>
-								<string key="NSFrame">{{7, 7}, {308, 17}}</string>
-								<reference key="NSSuperview" ref="242495460"/>
+								<string key="NSFrame">{{7, 7}, {549, 17}}</string>
+								<reference key="NSSuperview" ref="715919500"/>
 								<reference key="NSWindow"/>
-								<reference key="NSNextKeyView" ref="217857655"/>
+								<reference key="NSNextKeyView" ref="840528027"/>
 								<string key="NSReuseIdentifierKey">_NS:1535</string>
 								<bool key="NSEnabled">YES</bool>
-								<object class="NSTextFieldCell" key="NSCell" id="769655285">
+								<object class="NSTextFieldCell" key="NSCell" id="644426224">
 									<int key="NSCellFlags">68157504</int>
 									<int key="NSCellFlags2">71304192</int>
-									<string key="NSContents">Your conversation is encrypted, but still logged.</string>
+									<string key="NSContents">Your conversation is encrypted, but still logged by you. Your security might be at risk.</string>
 									<object class="NSFont" key="NSSupport">
 										<string key="NSName">LucidaGrande</string>
 										<double key="NSSize">13</double>
 										<int key="NSfFlags">1044</int>
 									</object>
 									<string key="NSCellIdentifier">_NS:1535</string>
-									<reference key="NSControlView" ref="36830098"/>
+									<reference key="NSControlView" ref="49463977"/>
 									<object class="NSColor" key="NSBackgroundColor">
 										<int key="NSColorSpace">6</int>
 										<string key="NSCatalogName">System</string>
@@ -115,16 +115,16 @@
 							</object>
 						</array>
 						<string key="NSFrameSize">{480, 30}</string>
-						<reference key="NSSuperview" ref="124609527"/>
+						<reference key="NSSuperview" ref="495947813"/>
 						<reference key="NSWindow"/>
-						<reference key="NSNextKeyView" ref="36830098"/>
+						<reference key="NSNextKeyView" ref="49463977"/>
 						<string key="NSClassName">AITopBarGradientView</string>
 					</object>
 				</array>
 				<string key="NSFrameSize">{480, 30}</string>
 				<reference key="NSSuperview"/>
 				<reference key="NSWindow"/>
-				<reference key="NSNextKeyView" ref="242495460"/>
+				<reference key="NSNextKeyView" ref="715919500"/>
 				<string key="NSReuseIdentifierKey">_NS:9</string>
 				<string key="NSClassName">NSView</string>
 			</object>
@@ -135,7 +135,7 @@
 					<object class="IBOutletConnection" key="connection">
 						<string key="label">view</string>
 						<reference key="source" ref="1001"/>
-						<reference key="destination" ref="124609527"/>
+						<reference key="destination" ref="495947813"/>
 					</object>
 					<int key="connectionID">18</int>
 				</object>
@@ -143,7 +143,7 @@
 					<object class="IBOutletConnection" key="connection">
 						<string key="label">view_backgroundView</string>
 						<reference key="source" ref="1001"/>
-						<reference key="destination" ref="242495460"/>
+						<reference key="destination" ref="715919500"/>
 					</object>
 					<int key="connectionID">19</int>
 				</object>
@@ -151,7 +151,7 @@
 					<object class="IBActionConnection" key="connection">
 						<string key="label">configureLogging:</string>
 						<reference key="source" ref="1001"/>
-						<reference key="destination" ref="217857655"/>
+						<reference key="destination" ref="840528027"/>
 					</object>
 					<int key="connectionID">20</int>
 				</object>
@@ -184,46 +184,46 @@
 					</object>
 					<object class="IBObjectRecord">
 						<int key="objectID">3</int>
-						<reference key="object" ref="124609527"/>
+						<reference key="object" ref="495947813"/>
 						<array class="NSMutableArray" key="children">
-							<reference ref="242495460"/>
+							<reference ref="715919500"/>
 						</array>
 						<reference key="parent" ref="0"/>
 					</object>
 					<object class="IBObjectRecord">
 						<int key="objectID">4</int>
-						<reference key="object" ref="242495460"/>
+						<reference key="object" ref="715919500"/>
 						<array class="NSMutableArray" key="children">
-							<reference ref="217857655"/>
-							<reference ref="36830098"/>
+							<reference ref="840528027"/>
+							<reference ref="49463977"/>
 						</array>
-						<reference key="parent" ref="124609527"/>
+						<reference key="parent" ref="495947813"/>
 					</object>
 					<object class="IBObjectRecord">
 						<int key="objectID">5</int>
-						<reference key="object" ref="217857655"/>
+						<reference key="object" ref="840528027"/>
 						<array class="NSMutableArray" key="children">
-							<reference ref="117192799"/>
+							<reference ref="227781480"/>
 						</array>
-						<reference key="parent" ref="242495460"/>
+						<reference key="parent" ref="715919500"/>
 					</object>
 					<object class="IBObjectRecord">
 						<int key="objectID">8</int>
-						<reference key="object" ref="117192799"/>
-						<reference key="parent" ref="217857655"/>
+						<reference key="object" ref="227781480"/>
+						<reference key="parent" ref="840528027"/>
 					</object>
 					<object class="IBObjectRecord">
 						<int key="objectID">6</int>
-						<reference key="object" ref="36830098"/>
+						<reference key="object" ref="49463977"/>
 						<array class="NSMutableArray" key="children">
-							<reference ref="769655285"/>
+							<reference ref="644426224"/>
 						</array>
-						<reference key="parent" ref="242495460"/>
+						<reference key="parent" ref="715919500"/>
 					</object>
 					<object class="IBObjectRecord">
 						<int key="objectID">7</int>
-						<reference key="object" ref="769655285"/>
-						<reference key="parent" ref="36830098"/>
+						<reference key="object" ref="644426224"/>
+						<reference key="parent" ref="49463977"/>
 					</object>
 				</array>
 			</object>
diff -r cf9fd616e5e2 -r 5ef1c662a3b6 Source/AdiumOTREncryption.m
--- a/Source/AdiumOTREncryption.m	Wed Jan 23 02:24:33 2013 +0100
+++ b/Source/AdiumOTREncryption.m	Wed Jan 23 02:50:43 2013 +0100
@@ -972,16 +972,6 @@
 		NSMutableDictionary	*fullSecurityDetailsDict;
 		
 		if (securityDetailsDict) {
-			
-			NSInteger newEncryptionStatus = [[securityDetailsDict objectForKey:@"EncryptionStatus"] integerValue];
-			NSInteger oldEncryptionStatus = [[[inChat securityDetails] objectForKey:@"EncryptionStatus"] integerValue];
-			
-			if (newEncryptionStatus != EncryptionStatus_None && oldEncryptionStatus == EncryptionStatus_None && [inChat shouldLog]) {
-				AIOTRTopBarLoggingWarningController *warningController = [[AIOTRTopBarLoggingWarningController alloc] init];
-				AIMessageViewController *mvc = [[inChat chatContainer] messageViewController];
-				[mvc addTopBarController:warningController];
-			}
-			
 			NSString				*format, *description;
 			fullSecurityDetailsDict = [[securityDetailsDict mutableCopy] autorelease];
 			
@@ -1014,9 +1004,20 @@
 			fullSecurityDetailsDict = nil;	
 		}
 		
+		
+		NSInteger oldEncryptionStatus = [[[inChat securityDetails] objectForKey:@"EncryptionStatus"] integerValue];
+		
 		[inChat setSecurityDetails:fullSecurityDetailsDict];
+		
+		NSInteger newEncryptionStatus = [[securityDetailsDict objectForKey:@"EncryptionStatus"] integerValue];
+		
+		if (newEncryptionStatus != EncryptionStatus_None && oldEncryptionStatus == EncryptionStatus_None && inChat.shouldLog) {
+			AIOTRTopBarLoggingWarningController *warningController = [[AIOTRTopBarLoggingWarningController alloc] init];
+			AIMessageViewController *mvc = [[inChat chatContainer] messageViewController];
+			[mvc addTopBarController:warningController];
+		}
 	}
-}	
+}
 
 #pragma mark -
 




More information about the commits mailing list