Changeset 21549
- Timestamp:
- 11/06/2007 02:24:56 AM (1 year ago)
- Files:
-
- trunk/Frameworks/Adium Framework/Source/AIAdiumProtocol.h (modified) (1 diff)
- trunk/Resources/ConfirmationDefaults.plist (modified) (1 diff)
- trunk/Resources/StatusPreferencesAdvanced.nib/classes.nib (modified) (1 diff)
- trunk/Resources/StatusPreferencesAdvanced.nib/info.nib (modified) (2 diffs)
- trunk/Resources/StatusPreferencesAdvanced.nib/keyedobjects.nib (modified) (previous)
- trunk/Source/AIAdium.m (modified) (4 diffs)
- trunk/Source/ESStatusAdvancedPreferences.h (modified) (1 diff)
- trunk/Source/ESStatusAdvancedPreferences.m (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Frameworks/Adium Framework/Source/AIAdiumProtocol.h
r21266 r21549 10 10 11 11 @class AICoreComponentLoader; 12 13 typedef enum { 14 AIQuitConfirmNever = 0, 15 AIQuitConfirmAlways, 16 AIQuitConfirmSelective 17 } AIQuitConfirmationType; 12 18 13 19 @protocol AIAccountController, AIChatController, AIContactAlertsController, AIDebugController, trunk/Resources/ConfirmationDefaults.plist
r20484 r21549 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 3 <plist version="1.0"> 4 4 <dict> 5 <key>Confirm Quit</key> 6 <true/> 5 <key>Confirm Quit Type</key> 6 <integer>1</integer> 7 <key>Suppress Quit Confirmation for File Transfers</key> 8 <false/> 9 <key>Suppress Quit Confirmation for Open Chats</key> 10 <false/> 11 <key>Suppress Quit Confirmation for Unread Messages</key> 12 <false/> 7 13 </dict> 8 14 </plist> trunk/Resources/StatusPreferencesAdvanced.nib/classes.nib
r21338 r21549 1 { 2 IBClasses = ( 3 { 4 CLASS = AILocalizationButton; 5 LANGUAGE = ObjC; 6 OUTLETS = { 7 "view_anchorToLeftSide" = NSView; 8 "view_anchorToRightSide" = NSView; 9 "window_anchorOnLeftSide" = NSWindow; 10 "window_anchorOnRightSide" = NSWindow; 11 }; 12 SUPERCLASS = NSButton; 13 }, 14 { 15 CLASS = AILocalizationTextField; 16 LANGUAGE = ObjC; 17 OUTLETS = { 18 "view_anchorToLeftSide" = NSView; 19 "view_anchorToRightSide" = NSView; 20 "window_anchorOnLeftSide" = NSWindow; 21 }; 22 SUPERCLASS = NSTextField; 23 }, 24 { 25 ACTIONS = {changePreference = id; }; 26 CLASS = AIPreferencePane; 27 LANGUAGE = ObjC; 28 OUTLETS = { 29 delegate = id; 30 "textField_title" = NSTextField; 31 view = NSView; 32 "view_containerSubView" = NSView; 33 "view_containerView" = NSView; 34 }; 35 SUPERCLASS = NSObject; 36 }, 37 { 38 CLASS = ESStatusAdvancedPreferences; 39 LANGUAGE = ObjC; 40 OUTLETS = { 41 "checkBox_statusMenuItemBadge" = NSButton; 42 "checkBox_statusMenuItemFlash" = NSButton; 43 "checkBox_statusWindowAlwaysOnTop" = NSButton; 44 "checkBox_statusWindowHideInBackground" = NSButton; 45 "label_statusMenuItem" = NSTextField; 46 "label_statusWindow" = NSTextField; 47 }; 48 SUPERCLASS = AIPreferencePane; 49 }, 50 {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 51 {CLASS = NSObject; LANGUAGE = ObjC; } 52 ); 53 IBVersion = 1; 54 } 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 <plist version="1.0"> 4 <dict> 5 <key>IBClasses</key> 6 <array> 7 <dict> 8 <key>CLASS</key> 9 <string>NSApplication</string> 10 <key>LANGUAGE</key> 11 <string>ObjC</string> 12 <key>SUPERCLASS</key> 13 <string>NSResponder</string> 14 </dict> 15 <dict> 16 <key>CLASS</key> 17 <string>NSTextField</string> 18 <key>LANGUAGE</key> 19 <string>ObjC</string> 20 <key>SUPERCLASS</key> 21 <string>NSControl</string> 22 </dict> 23 <dict> 24 <key>ACTIONS</key> 25 <dict> 26 <key>adiumPrint</key> 27 <string>id</string> 28 <key>prefsWindowWillClose</key> 29 <string>SS_PrefsController</string> 30 </dict> 31 <key>CLASS</key> 32 <string>NSObject</string> 33 <key>LANGUAGE</key> 34 <string>ObjC</string> 35 </dict> 36 <dict> 37 <key>CLASS</key> 38 <string>AILocalizationButton</string> 39 <key>LANGUAGE</key> 40 <string>ObjC</string> 41 <key>OUTLETS</key> 42 <dict> 43 <key>view_anchorToLeftSide</key> 44 <string>NSView</string> 45 <key>view_anchorToRightSide</key> 46 <string>NSView</string> 47 <key>window_anchorOnLeftSide</key> 48 <string>NSWindow</string> 49 <key>window_anchorOnRightSide</key> 50 <string>NSWindow</string> 51 </dict> 52 <key>SUPERCLASS</key> 53 <string>NSButton</string> 54 </dict> 55 <dict> 56 <key>CLASS</key> 57 <string>NSWindow</string> 58 <key>LANGUAGE</key> 59 <string>ObjC</string> 60 <key>SUPERCLASS</key> 61 <string>NSResponder</string> 62 </dict> 63 <dict> 64 <key>CLASS</key> 65 <string>FirstResponder</string> 66 <key>LANGUAGE</key> 67 <string>ObjC</string> 68 <key>SUPERCLASS</key> 69 <string>NSObject</string> 70 </dict> 71 <dict> 72 <key>ACTIONS</key> 73 <dict> 74 <key>changePreference</key> 75 <string>id</string> 76 </dict> 77 <key>CLASS</key> 78 <string>AIPreferencePane</string> 79 <key>LANGUAGE</key> 80 <string>ObjC</string> 81 <key>OUTLETS</key> 82 <dict> 83 <key>delegate</key> 84 <string>id</string> 85 <key>textField_title</key> 86 <string>NSTextField</string> 87 <key>view</key> 88 <string>NSView</string> 89 <key>view_containerSubView</key> 90 <string>NSView</string> 91 <key>view_containerView</key> 92 <string>NSView</string> 93 </dict> 94 <key>SUPERCLASS</key> 95 <string>AIModularPane</string> 96 </dict> 97 <dict> 98 <key>ACTIONS</key> 99 <dict> 100 <key>changePreference</key> 101 <string>id</string> 102 </dict> 103 <key>CLASS</key> 104 <string>AIModularPane</string> 105 <key>LANGUAGE</key> 106 <string>ObjC</string> 107 <key>OUTLETS</key> 108 <dict> 109 <key>plugin</key> 110 <string>id</string> 111 <key>view</key> 112 <string>NSView</string> 113 </dict> 114 <key>SUPERCLASS</key> 115 <string>AIObject</string> 116 </dict> 117 <dict> 118 <key>CLASS</key> 119 <string>NSButton</string> 120 <key>LANGUAGE</key> 121 <string>ObjC</string> 122 <key>SUPERCLASS</key> 123 <string>NSControl</string> 124 </dict> 125 <dict> 126 <key>CLASS</key> 127 <string>ESStatusAdvancedPreferences</string> 128 <key>LANGUAGE</key> 129 <string>ObjC</string> 130 <key>OUTLETS</key> 131 <dict> 132 <key>checkBox_quitConfirmFT</key> 133 <string>NSButton</string> 134 <key>checkBox_quitConfirmOpenChats</key> 135 <string>NSButton</string> 136 <key>checkBox_quitConfirmUnread</key> 137 <string>NSButton</string> 138 <key>checkBox_statusMenuItemBadge</key> 139 <string>NSButton</string> 140 <key>checkBox_statusMenuItemFlash</key> 141 <string>NSButton</string> 142 <key>checkBox_statusWindowAlwaysOnTop</key> 143 <string>NSButton</string> 144 <key>checkBox_statusWindowHideInBackground</key> 145 <string>NSButton</string> 146 <key>label_quitConfirmation</key> 147 <string>NSTextField</string> 148 <key>label_quitConfirmationSentence</key> 149 <string>NSTextField</string> 150 <key>label_statusMenuItem</key> 151 <string>NSTextField</string> 152 <key>label_statusWindow</key> 153 <string>NSTextField</string> 154 <key>matrix_quitConfirmation</key> 155 <string>NSMatrix</string> 156 </dict> 157 <key>SUPERCLASS</key> 158 <string>AIPreferencePane</string> 159 </dict> 160 <dict> 161 <key>CLASS</key> 162 <string>AIObject</string> 163 <key>LANGUAGE</key> 164 <string>ObjC</string> 165 <key>SUPERCLASS</key> 166 <string>NSObject</string> 167 </dict> 168 <dict> 169 <key>CLASS</key> 170 <string>AILocalizationTextField</string> 171 <key>LANGUAGE</key> 172 <string>ObjC</string> 173 <key>OUTLETS</key> 174 <dict> 175 <key>view_anchorToLeftSide</key> 176 <string>NSView</string> 177 <key>view_anchorToRightSide</key> 178 <string>NSView</string> 179 <key>window_anchorOnLeftSide</key> 180 <string>NSWindow</string> 181 <key>window_anchorOnRightSide</key> 182 <string>NSWindow</string> 183 </dict> 184 <key>SUPERCLASS</key> 185 <string>NSTextField</string> 186 </dict> 187 <dict> 188 <key>CLASS</key> 189 <string>NSButtonCell</string> 190 <key>LANGUAGE</key> 191 <string>ObjC</string> 192 <key>SUPERCLASS</key> 193 <string>NSActionCell</string> 194 </dict> 195 <dict> 196 <key>CLASS</key> 197 <string>SS_PrefsController</string> 198 <key>LANGUAGE</key> 199 <string>ObjC</string> 200 <key>OUTLETS</key> 201 <dict> 202 <key>delegate</key> 203 <string>id</string> 204 </dict> 205 <key>SUPERCLASS</key> 206 <string>NSObject</string> 207 </dict> 208 </array> 209 <key>IBVersion</key> 210 <string>1</string> 211 </dict> 212 </plist> trunk/Resources/StatusPreferencesAdvanced.nib/info.nib
r21338 r21549 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 3 <plist version="1.0"> 4 4 <dict> 5 <key>IBDocumentLocation</key>6 <string>117 90 356 240 0 0 1920 1178 </string>7 <key>IBEditorPositions</key>8 <dict>9 <key>6</key>10 <string>785 694 346 182 0 0 1920 1178 </string>11 </dict>12 5 <key>IBFramework Version</key> 13 <string>482.0</string> 6 <string>629</string> 7 <key>IBLastKnownRelativeProjectPath</key> 8 <string>../../Adium.xcodeproj</string> 9 <key>IBOldestOS</key> 10 <integer>5</integer> 14 11 <key>IBOpenObjects</key> 15 12 <array> … … 17 14 </array> 18 15 <key>IBSystem Version</key> 19 <string> 8R2218</string>20 <key> IBUsesTextArchiving</key>21 < true/>16 <string>9A581</string> 17 <key>targetFramework</key> 18 <string>IBCocoaFramework</string> 22 19 </dict> 23 20 </plist> trunk/Source/AIAdium.m
r21355 r21549 335 335 - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender 336 336 { 337 AIQuitConfirmationType confirmationType = [[preferenceController preferenceForKey:@"Confirm Quit Type" 338 group:@"Confirmations"] intValue]; 339 BOOL confirmUnreadMessages = ![[preferenceController preferenceForKey:@"Suppress Quit Confirmation for Unread Messages" 340 group:@"Confirmations"] boolValue]; 341 BOOL confirmFileTransfers = ![[preferenceController preferenceForKey:@"Suppress Quit Confirmation for File Transfers" 342 group:@"Confirmations"] boolValue]; 343 BOOL confirmOpenChats = ![[preferenceController preferenceForKey:@"Suppress Quit Confirmation for Open Chats" 344 group:@"Confirmations"] boolValue]; 345 346 NSString *questionToAsk = [NSString string]; 347 SEL questionSelector = nil; 348 337 349 NSApplicationTerminateReply allowQuit = NSTerminateNow; 338 if (([chatController unviewedContentCount] > 0) && 339 (![[preferenceController preferenceForKey:@"Suppress Quit Confirmation for Unread Messages" 340 group:@"Confirmations"] boolValue])) { 350 351 switch (confirmationType) { 352 case AIQuitConfirmNever: 353 allowQuit = NSTerminateNow; 354 break; 355 356 case AIQuitConfirmAlways: 357 questionSelector = @selector(confirmQuitQuestion:userInfo:); 358 359 allowQuit = NSTerminateLater; 360 break; 361 362 case AIQuitConfirmSelective: 363 if ([chatController unviewedContentCount] > 0 && confirmUnreadMessages) { 364 questionToAsk = AILocalizedString(@"You have unread messages.",@"Quit Confirmation"); 365 questionSelector = @selector(unreadQuitQuestion:userInfo:); 366 allowQuit = NSTerminateLater; 367 } else if ([fileTransferController activeTransferCount] > 0 && confirmFileTransfers) { 368 questionToAsk = AILocalizedString(@"You have file transfers in progress.",@"Quit Confirmation"); 369 questionSelector = @selector(fileTransferQuitQuestion:userInfo:); 370 allowQuit = NSTerminateLater; 371 } else if ([[chatController openChats] count] > 0 && confirmOpenChats) { 372 questionToAsk = AILocalizedString(@"You have open chats.",@"Quit Confirmation"); 373 questionSelector = @selector(openChatQuitQuestion:userInfo:); 374 allowQuit = NSTerminateLater; 375 } 376 377 break; 378 } 379 380 if (allowQuit == NSTerminateLater) { 341 381 [[self interfaceController] displayQuestion:AILocalizedString(@"Confirm Quit", nil) 342 withDescription:AILocalizedString(@"You have unread messages.\nAre you sure you want to quit?", nil) 382 withDescription:[questionToAsk stringByAppendingFormat:@"%@%@", 383 ([questionToAsk length] > 0 ? @"\n" : @""), 384 AILocalizedString(@"Are you sure you want to quit Adium?",@"Quit Confirmation")] 343 385 withWindowTitle:nil 344 386 defaultButton:AILocalizedString(@"Quit", nil) … … 346 388 otherButton:AILocalizedString(@"Don't ask again", nil) 347 389 target:self 348 selector: @selector(unreadQuitQuestion:userInfo:)390 selector:questionSelector 349 391 userInfo:nil]; 350 allowQuit = NSTerminateLater; 351 } 352 353 if (allowQuit == NSTerminateNow && 354 ([fileTransferController activeTransferCount] > 0) && 355 (![[preferenceController preferenceForKey:@"Suppress Quit Confirmation for File Transfers" 356 group:@"Confirmations"] boolValue])) { 357 [[self interfaceController] displayQuestion:AILocalizedString(@"Confirm Quit", nil) 358 withDescription:AILocalizedString(@"You have file transfers in progress.\nAre you sure you want to quit?", nil) 359 withWindowTitle:nil 360 defaultButton:AILocalizedString(@"Quit", nil) 361 alternateButton:AILocalizedString(@"Cancel", nil) 362 otherButton:AILocalizedString(@"Don't ask again", nil) 363 target:self 364 selector:@selector(fileTransferQuitQuestion:userInfo:) 365 userInfo:nil]; 366 allowQuit = NSTerminateLater; 367 } 368 369 if (allowQuit == NSTerminateNow && 370 [[preferenceController preferenceForKey:@"Confirm Quit" 371 group:@"Confirmations"] boolValue]) { 372 [[self interfaceController] displayQuestion:AILocalizedString(@"Confirm Quit", nil) 373 withDescription:AILocalizedString(@"Are you sure you want to quit Adium?", nil) 374 withWindowTitle:nil 375 defaultButton:AILocalizedString(@"Quit", nil) 376 alternateButton:AILocalizedString(@"Cancel", nil) 377 otherButton:AILocalizedString(@"Don't ask again", nil) 378 target:self 379 selector:@selector(confirmQuitQuestion:userInfo:) 380 userInfo:nil]; 381 allowQuit = NSTerminateLater; 382 } 383 392 } 393 384 394 return allowQuit; 385 395 } … … 481 491 } 482 492 493 - (void)openChatQuitQuestion:(NSNumber *)number userInfo:(id)info 494 { 495 AITextAndButtonsReturnCode result = [number intValue]; 496 switch(result) 497 { 498 case AITextAndButtonsDefaultReturn: 499 //Quit 500 //Should we ask about File Transfers here????? 501 [NSApp replyToApplicationShouldTerminate:NSTerminateNow]; 502 break; 503 case AITextAndButtonsOtherReturn: 504 //Don't Ask Again 505 [[self preferenceController] setPreference:[NSNumber numberWithBool:YES] 506 forKey:@"Suppress Quit Confirmation for Open Chats" 507 group:@"Confirmations"]; 508 [NSApp replyToApplicationShouldTerminate:NSTerminateNow]; 509 break; 510 default: 511 //Cancel 512 [NSApp replyToApplicationShouldTerminate:NSTerminateCancel]; 513 break; 514 } 515 } 516 483 517 - (void)fileTransferQuitQuestion:(NSNumber *)number userInfo:(id)info 484 518 { … … 515 549 case AITextAndButtonsOtherReturn: 516 550 //Don't Ask Again 517 [[self preferenceController] setPreference:[NSNumber numberWith Bool:NO]518 forKey:@"Confirm Quit "551 [[self preferenceController] setPreference:[NSNumber numberWithInt:AIQuitConfirmSelective] 552 forKey:@"Confirm Quit Type" 519 553 group:@"Confirmations"]; 520 554 [NSApp replyToApplicationShouldTerminate:NSTerminateNow]; trunk/Source/ESStatusAdvancedPreferences.h
r21338 r21549 16 16 IBOutlet NSButton *checkBox_statusMenuItemBadge; 17 17 IBOutlet NSButton *checkBox_statusMenuItemFlash; 18 19 IBOutlet NSTextField *label_quitConfirmation; 20 IBOutlet NSTextField *label_quitConfirmationSentence; 21 22 IBOutlet NSMatrix *matrix_quitConfirmation; 23 IBOutlet NSButton *checkBox_quitConfirmFT; 24 IBOutlet NSButton *checkBox_quitConfirmUnread; 25 IBOutlet NSButton *checkBox_quitConfirmOpenChats; 18 26 } 19 27 trunk/Source/ESStatusAdvancedPreferences.m
r21338 r21549 31 31 - (IBAction)changePreference:(id)sender 32 32 { 33 if (sender == checkBox_statusWindowHideInBackground) { 34 [[adium preferenceController] setPreference:[NSNumber numberWithBool:[sender state]] 35 forKey:KEY_STATUS_STATUS_WINDOW_HIDE_IN_BACKGROUND 36 group:PREF_GROUP_STATUS_PREFERENCES]; 37 38 } else if (sender == checkBox_statusWindowAlwaysOnTop) { 39 [[adium preferenceController] setPreference:[NSNumber numberWithBool:[sender state]] 40 forKey:KEY_STATUS_STATUS_WINDOW_ON_TOP 41 group:PREF_GROUP_STATUS_PREFERENCES]; 42 } else if (sender == checkBox_statusMenuItemBadge) { 43 [[adium preferenceController] setPreference:[NSNumber numberWithBool:[sender state]] 44 forKey:KEY_STATUS_MENU_ITEM_BADGE 45 group:PREF_GROUP_STATUS_MENU_ITEM]; 46 } else if (sender == checkBox_statusMenuItemFlash) { 47 [[adium preferenceController] setPreference:[NSNumber numberWithBool:[sender state]] 48 forKey:KEY_STATUS_MENU_ITEM_FLASH 49 group:PREF_GROUP_STATUS_MENU_ITEM]; 33 if (sender == matrix_quitConfirmation) { 34 [self configureControlDimming]; 50 35 } 36 } 37 38 - (void)configureControlDimming 39 { 40 BOOL enableSpecificConfirmations = ([[matrix_quitConfirmation selectedCell] tag] == AIQuitConfirmSelective); 41 42 [checkBox_quitConfirmFT setEnabled:enableSpecificConfirmations]; 43 [checkBox_quitConfirmUnread setEnabled:enableSpecificConfirmations]; 44 [checkBox_quitConfirmOpenChats setEnabled:enableSpecificConfirmations]; 51 45 } 52 46 … … 54 48 - (void)viewDidLoad 55 49 { 56 NSDictionary *prefDict;57 58 prefDict = [[adium preferenceController] preferencesForGroup:PREF_GROUP_STATUS_PREFERENCES];59 [checkBox_statusWindowHideInBackground setState:[[prefDict objectForKey:KEY_STATUS_STATUS_WINDOW_HIDE_IN_BACKGROUND] boolValue]];60 [checkBox_statusWindowAlwaysOnTop setState:[[prefDict objectForKey:KEY_STATUS_STATUS_WINDOW_ON_TOP] boolValue]];61 62 50 [label_statusWindow setLocalizedString:AILocalizedString(@"Away Status Window", nil)]; 63 51 [checkBox_statusWindowHideInBackground setLocalizedString:AILocalizedString(@"Hide the status window when Adium is not active", nil)]; 64 52 [checkBox_statusWindowAlwaysOnTop setLocalizedString:AILocalizedString(@"Show the status window above other windows", nil)]; 65 53 66 prefDict = [[adium preferenceController] preferencesForGroup:PREF_GROUP_STATUS_MENU_ITEM];67 [checkBox_statusMenuItemBadge setState:[[prefDict objectForKey:KEY_STATUS_MENU_ITEM_BADGE] boolValue]];68 [checkBox_statusMenuItemFlash setState:[[prefDict objectForKey:KEY_STATUS_MENU_ITEM_FLASH] boolValue]];69 70 54 [label_statusMenuItem setLocalizedString:AILocalizedString(@"Status Menu Item", nil)]; 71 55 [checkBox_statusMenuItemBadge setLocalizedString:AILocalizedString(@"Badge the menu item with current status", nil)]; 72 56 [checkBox_statusMenuItemFlash setLocalizedString:AILocalizedString(@"Flash when there are unread messages", nil)]; 57 58 [label_quitConfirmation setLocalizedString:AILocalizedString(@"Quit Confirmation", @"Preference")]; 59 [checkBox_quitConfirmFT setLocalizedString:AILocalizedString(@"When file transfers are in progress", @"Quit Confirmation preference")]; 60 [checkBox_quitConfirmUnread setLocalizedString:AILocalizedString(@"When there are unread messages", @"Quit Confirmation preference")]; 61 62 [label_quitConfirmationSentence setLocalizedString:AILocalizedString(@"When quitting Adium:", nil)]; 63 [[matrix_quitConfirmation cellWithTag:AIQuitConfirmNever] setTitle:AILocalizedString(@"Never confirm",@"Quit Confirmation preference")]; 64 [[matrix_quitConfirmation cellWithTag:AIQuitConfirmAlways] setTitle:AILocalizedString(@"Always confirm",@"Quit Confirmation preference")]; 65 [[matrix_quitConfirmation cellWithTag:AIQuitConfirmSelective] setTitle:AILocalizedString(@"Sometimes confirm",@"Quit Confirmation preference")]; 66 67 [self configureControlDimming]; 73 68 74 69 [super viewDidLoad];