[SyncFS] Build indexes from FileTracker entries on disk.
[chromium-blink-merge.git] / ui / message_center / views / message_center_button_bar.h
blobbc87dbed44e544ef89a5ac4aed2dd3feeb6bf156
1 // Copyright 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_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_
6 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_
8 #include "ui/views/controls/button/button.h"
9 #include "ui/views/controls/button/image_button.h"
10 #include "ui/views/view.h"
12 namespace views {
13 class Label;
16 namespace message_center {
18 class ButtonBarSettingsLabel;
19 class MessageCenter;
20 class MessageCenterTray;
21 class MessageCenterView;
22 class NotificationCenterButton;
23 class NotifierSettingsProvider;
25 // MessageCenterButtonBar is the class that shows the content outside the main
26 // notification area - the label (or NotifierGroup switcher) and the buttons.
27 class MessageCenterButtonBar : public views::View,
28 public views::ButtonListener {
29 public:
30 MessageCenterButtonBar(MessageCenterView* message_center_view,
31 MessageCenter* message_center,
32 NotifierSettingsProvider* notifier_settings_provider,
33 bool settings_initially_visible,
34 const base::string16& title);
35 virtual ~MessageCenterButtonBar();
37 // Enables or disables all of the buttons in the center. This is used to
38 // prevent user clicks during the close-all animation.
39 virtual void SetAllButtonsEnabled(bool enabled);
41 // Sometimes we shouldn't see the close-all button.
42 void SetCloseAllButtonEnabled(bool enabled);
44 // Sometimes we shouldn't see the back arrow (not in settings).
45 void SetBackArrowVisible(bool visible);
47 private:
48 // Updates the layout manager which can have differing configuration
49 // depending on the visibilty of different parts of the button bar.
50 void ViewVisibilityChanged();
52 // Overridden from views::View:
53 virtual void ChildVisibilityChanged(views::View* child) OVERRIDE;
55 // Overridden from views::ButtonListener:
56 virtual void ButtonPressed(views::Button* sender,
57 const ui::Event& event) OVERRIDE;
59 MessageCenterView* message_center_view() const {
60 return message_center_view_;
62 MessageCenter* message_center() const { return message_center_; }
64 MessageCenterView* message_center_view_; // Weak reference.
65 MessageCenter* message_center_; // Weak reference.
67 // |close_bubble_button_| closes the message center bubble. This is required
68 // for desktop Linux because the status icon doesn't toggle the bubble, and
69 // close-on-deactivation is off. This is a tentative solution. Once pkotwicz
70 // Fixes the problem of focus-follow-mouse, close-on-deactivation will be
71 // back and this field will be removed. See crbug.com/319516.
72 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
73 views::ImageButton* close_bubble_button_;
74 #endif
76 // Sub-views of the button bar.
77 NotificationCenterButton* title_arrow_;
78 views::Label* notification_label_;
79 views::View* button_container_;
80 NotificationCenterButton* close_all_button_;
81 NotificationCenterButton* settings_button_;
82 NotificationCenterButton* quiet_mode_button_;
84 DISALLOW_COPY_AND_ASSIGN(MessageCenterButtonBar);
87 } // namespace message_center
89 #endif // UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_