Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: chrome/browser/ui/cocoa/options/preferences_window_controller.h

Issue 6621076: [Mac] Remove native/Cocoa preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase switch removal Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698