| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #import <Cocoa/Cocoa.h> | |
| 6 | |
| 7 #include "base/scoped_ptr.h" | |
| 8 #include "base/scoped_nsobject.h" | |
| 9 #include "chrome/browser/prefs/pref_member.h" | |
| 10 #include "chrome/browser/prefs/pref_set_observer.h" | |
| 11 #include "chrome/browser/prefs/pref_change_registrar.h" | |
| 12 #include "chrome/browser/ui/options/options_window.h" | |
| 13 | |
| 14 namespace PreferencesWindowControllerInternal { | |
| 15 class PrefObserverBridge; | |
| 16 class ManagedPrefsBannerState; | |
| 17 } | |
| 18 | |
| 19 @class CustomHomePagesModel; | |
| 20 @class FontLanguageSettingsController; | |
| 21 class PrefService; | |
| 22 class Profile; | |
| 23 class ProfileSyncService; | |
| 24 @class SearchEngineListModel; | |
| 25 @class VerticalGradientView; | |
| 26 @class WindowSizeAutosaver; | |
| 27 | |
| 28 // A window controller that handles the preferences window. The bulk of the | |
| 29 // work is handled via Cocoa Bindings and getter/setter methods that wrap | |
| 30 // cross-platform PrefMember objects. When prefs change in the back-end | |
| 31 // (that is, outside of this UI), our observer receives a notification and can | |
| 32 // tickle the KVO to update the UI so we are always in sync. The bindings are | |
| 33 // specified in the nib file. Preferences are persisted into the back-end | |
| 34 // as they are changed in the UI, and are thus immediately available even while | |
| 35 // the window is still open. When the window closes, a notification is sent | |
| 36 // via the system NotificationCenter. This can be used as a signal to | |
| 37 // release this controller, as it's likely the client wants to enforce there | |
| 38 // only being one (we don't do that internally as it makes it very difficult | |
| 39 // to unit test). | |
| 40 @interface PreferencesWindowController : NSWindowController { | |
| 41 @private | |
| 42 Profile* profile_; // weak ref | |
| 43 OptionsPage initialPage_; | |
| 44 PrefService* prefs_; // weak ref - Obtained from profile_ for convenience. | |
| 45 // weak ref - Also obtained from profile_ for convenience. May be NULL. | |
| 46 ProfileSyncService* syncService_; | |
| 47 scoped_ptr<PreferencesWindowControllerInternal::PrefObserverBridge> | |
| 48 observer_; // Watches for pref changes. | |
| 49 PrefChangeRegistrar registrar_; // Manages pref change observer registration. | |
| 50 scoped_nsobject<WindowSizeAutosaver> sizeSaver_; | |
| 51 NSView* currentPrefsView_; // weak ref - current prefs page view. | |
| 52 scoped_ptr<PreferencesWindowControllerInternal::ManagedPrefsBannerState> | |
| 53 bannerState_; | |
| 54 BOOL managedPrefsBannerVisible_; | |
| 55 | |
| 56 IBOutlet NSToolbar* toolbar_; | |
| 57 IBOutlet VerticalGradientView* managedPrefsBannerView_; | |
| 58 IBOutlet NSImageView* managedPrefsBannerWarningImage_; | |
| 59 | |
| 60 // The views we'll rotate through | |
| 61 IBOutlet NSView* basicsView_; | |
| 62 IBOutlet NSView* personalStuffView_; | |
| 63 IBOutlet NSView* underTheHoodView_; | |
| 64 // The last page the user was on when they opened the Options window. | |
| 65 IntegerPrefMember lastSelectedPage_; | |
| 66 | |
| 67 // The groups of the Basics view for layout fixup. | |
| 68 IBOutlet NSArray* basicsGroupStartup_; | |
| 69 IBOutlet NSArray* basicsGroupHomePage_; | |
| 70 IBOutlet NSArray* basicsGroupToolbar_; | |
| 71 IBOutlet NSArray* basicsGroupSearchEngine_; | |
| 72 IBOutlet NSArray* basicsGroupDefaultBrowser_; | |
| 73 | |
| 74 // The groups of the Personal Stuff view for layout fixup. | |
| 75 IBOutlet NSArray* personalStuffGroupSync_; | |
| 76 IBOutlet NSArray* personalStuffGroupPasswords_; | |
| 77 IBOutlet NSArray* personalStuffGroupAutofill_; | |
| 78 IBOutlet NSArray* personalStuffGroupBrowserData_; | |
| 79 IBOutlet NSArray* personalStuffGroupThemes_; | |
| 80 | |
| 81 // Having two animations around is bad (they fight), so just use one. | |
| 82 scoped_nsobject<NSViewAnimation> animation_; | |
| 83 | |
| 84 IBOutlet NSArrayController* customPagesArrayController_; | |
| 85 | |
| 86 // Basics panel | |
| 87 IntegerPrefMember restoreOnStartup_; | |
| 88 scoped_nsobject<CustomHomePagesModel> customPagesSource_; | |
| 89 BooleanPrefMember newTabPageIsHomePage_; | |
| 90 StringPrefMember homepage_; | |
| 91 BooleanPrefMember showHomeButton_; | |
| 92 BooleanPrefMember instantEnabled_; | |
| 93 IBOutlet NSButton* instantCheckbox_; | |
| 94 scoped_nsobject<SearchEngineListModel> searchEngineModel_; | |
| 95 BooleanPrefMember default_browser_policy_; | |
| 96 // Used when creating a new home page url to make the new cell editable. | |
| 97 BOOL pendingSelectForEdit_; | |
| 98 BOOL restoreButtonsEnabled_; | |
| 99 BOOL restoreURLsEnabled_; | |
| 100 BOOL showHomeButtonEnabled_; | |
| 101 BOOL defaultSearchEngineEnabled_; | |
| 102 | |
| 103 // User Data panel | |
| 104 BooleanPrefMember askSavePasswords_; | |
| 105 BooleanPrefMember autoFillEnabled_; | |
| 106 IBOutlet NSButton* autoFillSettingsButton_; | |
| 107 IBOutlet NSButton* syncButton_; | |
| 108 IBOutlet NSButton* syncCustomizeButton_; | |
| 109 IBOutlet NSTextField* syncStatus_; | |
| 110 IBOutlet NSButton* syncLink_; | |
| 111 IBOutlet NSButton* privacyDashboardLink_; | |
| 112 scoped_nsobject<NSColor> syncStatusNoErrorBackgroundColor_; | |
| 113 scoped_nsobject<NSColor> syncLinkNoErrorBackgroundColor_; | |
| 114 scoped_nsobject<NSColor> syncErrorBackgroundColor_; | |
| 115 BOOL passwordManagerChoiceEnabled_; | |
| 116 BOOL passwordManagerButtonEnabled_; | |
| 117 BOOL autoFillSettingsButtonEnabled_; | |
| 118 | |
| 119 // Under the hood panel | |
| 120 IBOutlet NSView* underTheHoodContentView_; | |
| 121 IBOutlet NSScrollView* underTheHoodScroller_; | |
| 122 IBOutlet NSButton* contentSettingsButton_; | |
| 123 IBOutlet NSButton* clearDataButton_; | |
| 124 BooleanPrefMember alternateErrorPages_; | |
| 125 BooleanPrefMember useSuggest_; | |
| 126 BooleanPrefMember dnsPrefetch_; | |
| 127 BooleanPrefMember safeBrowsing_; | |
| 128 BooleanPrefMember metricsReporting_; | |
| 129 IBOutlet NSPathControl* downloadLocationControl_; | |
| 130 IBOutlet NSButton* downloadLocationButton_; | |
| 131 StringPrefMember defaultDownloadLocation_; | |
| 132 BooleanPrefMember askForSaveLocation_; | |
| 133 IBOutlet NSButton* resetFileHandlersButton_; | |
| 134 StringPrefMember autoOpenFiles_; | |
| 135 BooleanPrefMember translateEnabled_; | |
| 136 BooleanPrefMember tabsToLinks_; | |
| 137 FontLanguageSettingsController* fontLanguageSettings_; | |
| 138 StringPrefMember currentTheme_; | |
| 139 IBOutlet NSButton* enableLoggingCheckbox_; | |
| 140 scoped_ptr<PrefSetObserver> proxyPrefs_; | |
| 141 BOOL showAlternateErrorPagesEnabled_; | |
| 142 BOOL useSuggestEnabled_; | |
| 143 BOOL dnsPrefetchEnabled_; | |
| 144 BOOL safeBrowsingEnabled_; | |
| 145 BOOL metricsReportingEnabled_; | |
| 146 BOOL downloadLocationEnabled_; | |
| 147 BOOL proxiesConfigureButtonEnabled_; | |
| 148 } | |
| 149 | |
| 150 // Usable from cocoa bindings to hook up the custom home pages table. | |
| 151 @property(nonatomic, readonly) CustomHomePagesModel* customPagesSource; | |
| 152 | |
| 153 // Properties for the enabled state of various UI elements. Keep these ordered | |
| 154 // by occurrence on the dialog. | |
| 155 @property(nonatomic) BOOL restoreButtonsEnabled; | |
| 156 @property(nonatomic) BOOL restoreURLsEnabled; | |
| 157 @property(nonatomic) BOOL showHomeButtonEnabled; | |
| 158 @property(nonatomic) BOOL defaultSearchEngineEnabled; | |
| 159 @property(nonatomic) BOOL passwordManagerChoiceEnabled; | |
| 160 @property(nonatomic) BOOL passwordManagerButtonEnabled; | |
| 161 @property(nonatomic) BOOL autoFillSettingsButtonEnabled; | |
| 162 @property(nonatomic) BOOL showAlternateErrorPagesEnabled; | |
| 163 @property(nonatomic) BOOL useSuggestEnabled; | |
| 164 @property(nonatomic) BOOL dnsPrefetchEnabled; | |
| 165 @property(nonatomic) BOOL safeBrowsingEnabled; | |
| 166 @property(nonatomic) BOOL metricsReportingEnabled; | |
| 167 @property(nonatomic) BOOL downloadLocationEnabled; | |
| 168 @property(nonatomic) BOOL proxiesConfigureButtonEnabled; | |
| 169 | |
| 170 // Designated initializer. |profile| should not be NULL. | |
| 171 - (id)initWithProfile:(Profile*)profile initialPage:(OptionsPage)initialPage; | |
| 172 | |
| 173 // Show the preferences window. | |
| 174 - (void)showPreferences:(id)sender; | |
| 175 | |
| 176 // Switch to the given preference page. | |
| 177 - (void)switchToPage:(OptionsPage)page animate:(BOOL)animate; | |
| 178 | |
| 179 // Enables or disables the restoreOnStartup elements | |
| 180 - (void) setEnabledStateOfRestoreOnStartup; | |
| 181 | |
| 182 // IBAction methods for responding to user actions. | |
| 183 | |
| 184 // Basics panel | |
| 185 - (IBAction)addHomepage:(id)sender; | |
| 186 - (IBAction)removeSelectedHomepages:(id)sender; | |
| 187 - (IBAction)useCurrentPagesAsHomepage:(id)sender; | |
| 188 - (IBAction)manageSearchEngines:(id)sender; | |
| 189 - (IBAction)toggleInstant:(id)sender; | |
| 190 - (IBAction)learnMoreAboutInstant:(id)sender; | |
| 191 - (IBAction)makeDefaultBrowser:(id)sender; | |
| 192 | |
| 193 // User Data panel | |
| 194 - (IBAction)doSyncAction:(id)sender; | |
| 195 - (IBAction)doSyncCustomize:(id)sender; | |
| 196 - (IBAction)doSyncReauthentication:(id)sender; | |
| 197 - (IBAction)showPrivacyDashboard:(id)sender; | |
| 198 - (IBAction)showSavedPasswords:(id)sender; | |
| 199 - (IBAction)showAutoFillSettings:(id)sender; | |
| 200 - (IBAction)importData:(id)sender; | |
| 201 - (IBAction)resetThemeToDefault:(id)sender; | |
| 202 - (IBAction)themesGallery:(id)sender; | |
| 203 | |
| 204 // Under the hood | |
| 205 - (IBAction)showContentSettings:(id)sender; | |
| 206 - (IBAction)clearData:(id)sender; | |
| 207 - (IBAction)privacyLearnMore:(id)sender; | |
| 208 - (IBAction)browseDownloadLocation:(id)sender; | |
| 209 - (IBAction)resetAutoOpenFiles:(id)sender; | |
| 210 - (IBAction)changeFontAndLanguageSettings:(id)sender; | |
| 211 - (IBAction)openProxyPreferences:(id)sender; | |
| 212 - (IBAction)showCertificates:(id)sender; | |
| 213 - (IBAction)resetToDefaults:(id)sender; | |
| 214 | |
| 215 // When a toolbar button is clicked | |
| 216 - (IBAction)toolbarButtonSelected:(id)sender; | |
| 217 | |
| 218 @end | |
| 219 | |
| 220 @interface PreferencesWindowController(Testing) | |
| 221 | |
| 222 - (IntegerPrefMember*)lastSelectedPage; | |
| 223 - (NSToolbar*)toolbar; | |
| 224 - (NSView*)basicsView; | |
| 225 - (NSView*)personalStuffView; | |
| 226 - (NSView*)underTheHoodView; | |
| 227 | |
| 228 // Converts the given OptionsPage value (which may be OPTIONS_PAGE_DEFAULT) | |
| 229 // into a concrete OptionsPage value. | |
| 230 - (OptionsPage)normalizePage:(OptionsPage)page; | |
| 231 | |
| 232 // Returns the toolbar item corresponding to the given page. Should be | |
| 233 // called only after awakeFromNib is. | |
| 234 - (NSToolbarItem*)getToolbarItemForPage:(OptionsPage)page; | |
| 235 | |
| 236 // Returns the (normalized) page corresponding to the given toolbar item. | |
| 237 // Should be called only after awakeFromNib is. | |
| 238 - (OptionsPage)getPageForToolbarItem:(NSToolbarItem*)toolbarItem; | |
| 239 | |
| 240 // Returns the view corresponding to the given page. Should be called | |
| 241 // only after awakeFromNib is. | |
| 242 - (NSView*)getPrefsViewForPage:(OptionsPage)page; | |
| 243 | |
| 244 @end | |
| OLD | NEW |