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 18namespace message_center { 19 20// Bridge class between C++ and Cocoa world. 21class 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. 42MESSAGE_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