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.
5 #ifndef UI_MESSAGE_CENTER_COCOA_SETTINGS_CONTROLLER_H_
6 #define UI_MESSAGE_CENTER_COCOA_SETTINGS_CONTROLLER_H_
8 #import <Cocoa/Cocoa.h>
10 #import "base/mac/scoped_nsobject.h"
11 #include "base/memory/scoped_ptr.h"
12 #import "ui/message_center/cocoa/settings_entry_view.h"
13 #include "ui/message_center/message_center_export.h"
14 #include "ui/message_center/notifier_settings.h"
16 @
class MCSettingsController
;
17 @
class MCTrayViewController
;
19 namespace message_center
{
21 // Bridge class between C++ and Cocoa world.
22 class NotifierSettingsObserverMac
: public NotifierSettingsObserver
{
24 NotifierSettingsObserverMac(MCSettingsController
* settings_controller
)
25 : settings_controller_(settings_controller
) {}
26 virtual ~NotifierSettingsObserverMac();
28 // Overridden from NotifierSettingsObserver:
29 virtual void UpdateIconImage(const NotifierId
& notifier_id
,
30 const gfx::Image
& icon
) OVERRIDE
;
31 virtual void NotifierGroupChanged() OVERRIDE
;
34 MCSettingsController
* settings_controller_
; // weak, owns this
36 DISALLOW_COPY_AND_ASSIGN(NotifierSettingsObserverMac
);
39 } // namespace message_center
41 // The view controller responsible for the settings sheet in the center.
43 @interface MCSettingsController
: NSViewController
{
45 scoped_ptr
<message_center::NotifierSettingsObserverMac
> observer_
;
46 message_center::NotifierSettingsProvider
* provider_
;
47 MCTrayViewController
* trayViewController_
; // Weak. Owns us.
49 // The "Settings" text at the top.
50 base::scoped_nsobject
<NSTextField
> settingsText_
;
52 // The smaller text below the "Settings" text.
53 base::scoped_nsobject
<NSTextField
> detailsText_
;
55 // The profile switcher.
56 base::scoped_nsobject
<NSPopUpButton
> groupDropDownButton_
;
58 // Container for all the checkboxes.
59 base::scoped_nsobject
<NSScrollView
> scrollView_
;
61 std::vector
<message_center::Notifier
*> notifiers_
;
64 // Designated initializer.
65 - (id
)initWithProvider
:(message_center::NotifierSettingsProvider
*)provider
66 trayViewController
:(MCTrayViewController
*)trayViewController
;
68 // Returns whether |provider_| has an advanced settings handler for the given
69 // notifier; i.e. we should show the "Learn More" button.
70 - (BOOL
)notifierHasAdvancedSettings
:(const message_center::NotifierId
&)id
;
72 // Handler when a checkbox is enabled/disabled.
73 - (void)setSettingsNotifier
:(message_center::Notifier
*)notifier
74 enabled
:(BOOL
)enabled
;
76 // Handler when the learn more link is clicked.
77 - (void)learnMoreClicked
:(message_center::Notifier
*)notifier
;
81 // Testing API /////////////////////////////////////////////////////////////////
83 @interface
MCSettingsController (TestingAPI
)
84 - (NSPopUpButton
*)groupDropDownButton
;
85 - (NSScrollView
*)scrollView
;
88 #endif // UI_MESSAGE_CENTER_COCOA_SETTINGS_CONTROLLER_H_