1 // Copyright (c) 2013 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 #ifndef UI_MESSAGE_CENTER_COCOA_SETTINGS_CONTROLLER_H_ 6 #define UI_MESSAGE_CENTER_COCOA_SETTINGS_CONTROLLER_H_ 7 8 #import <Cocoa/Cocoa.h> 9 10 #import "base/mac/scoped_nsobject.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "ui/message_center/message_center_export.h" 13 #include "ui/message_center/notifier_settings.h" 14 15 @class MCSettingsController; 16 @class MCTrayViewController; 17 18 namespace message_center { 19 20 // Bridge class between C++ and Cocoa world. 21 class NotifierSettingsObserverMac : public NotifierSettingsObserver { 22 public: 23 NotifierSettingsObserverMac(MCSettingsController* settings_controller) 24 : settings_controller_(settings_controller) {} 25 virtual ~NotifierSettingsObserverMac(); 26 27 // Overridden from NotifierSettingsObserver: 28 virtual void UpdateIconImage(const NotifierId& notifier_id, 29 const gfx::Image& icon) OVERRIDE; 30 virtual void NotifierGroupChanged() OVERRIDE; 31 32 private: 33 MCSettingsController* settings_controller_; // weak, owns this 34 35 DISALLOW_COPY_AND_ASSIGN(NotifierSettingsObserverMac); 36 }; 37 38 } // namespace message_center 39 40 41 // The view controller responsible for the settings sheet in the center. 42 MESSAGE_CENTER_EXPORT 43 @interface MCSettingsController : NSViewController { 44 @private 45 scoped_ptr<message_center::NotifierSettingsObserverMac> observer_; 46 message_center::NotifierSettingsProvider* provider_; 47 MCTrayViewController* trayViewController_; // Weak. Owns us. 48 49 // The "Settings" text at the top. 50 base::scoped_nsobject<NSTextField> settingsText_; 51 52 // The smaller text below the "Settings" text. 53 base::scoped_nsobject<NSTextField> detailsText_; 54 55 // The profile switcher. 56 base::scoped_nsobject<NSPopUpButton> groupDropDownButton_; 57 58 // Container for all the checkboxes. 59 base::scoped_nsobject<NSScrollView> scrollView_; 60 61 std::vector<message_center::Notifier*> notifiers_; 62 } 63 64 // Designated initializer. 65 - (id)initWithProvider:(message_center::NotifierSettingsProvider*)provider 66 trayViewController:(MCTrayViewController*)trayViewController; 67 68 @end 69 70 // Testing API ///////////////////////////////////////////////////////////////// 71 72 @interface MCSettingsController (TestingAPI) 73 - (NSPopUpButton*)groupDropDownButton; 74 - (NSScrollView*)scrollView; 75 @end 76 77 #endif // UI_MESSAGE_CENTER_COCOA_SETTINGS_CONTROLLER_H_ 78