| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_ |
| #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_ |
| |
| #include "base/macros.h" |
| #include "build/build_config.h" |
| #include "ui/message_center/message_center_export.h" |
| #include "ui/views/controls/button/button.h" |
| #include "ui/views/controls/button/image_button.h" |
| #include "ui/views/view.h" |
| |
| namespace views { |
| class Label; |
| } |
| |
| namespace message_center { |
| |
| class ButtonBarSettingsLabel; |
| class MessageCenter; |
| class MessageCenterTray; |
| class MessageCenterView; |
| class NotificationCenterButton; |
| class NotifierSettingsProvider; |
| |
| // MessageCenterButtonBar is the class that shows the content outside the main |
| // notification area - the label (or NotifierGroup switcher) and the buttons. |
| class MessageCenterButtonBar : public views::View, |
| public views::ButtonListener { |
| public: |
| MessageCenterButtonBar(MessageCenterView* message_center_view, |
| MessageCenter* message_center, |
| NotifierSettingsProvider* notifier_settings_provider, |
| bool settings_initially_visible, |
| const base::string16& title); |
| ~MessageCenterButtonBar() override; |
| |
| // Enables or disables all of the buttons in the center. This is used to |
| // prevent user clicks during the close-all animation. |
| virtual void SetAllButtonsEnabled(bool enabled); |
| |
| // Sometimes we shouldn't see the close-all button. |
| void SetCloseAllButtonEnabled(bool enabled); |
| |
| MESSAGE_CENTER_EXPORT views::Button* GetCloseAllButtonForTest() const; |
| |
| // Sometimes we shouldn't see the back arrow (not in settings). |
| void SetBackArrowVisible(bool visible); |
| |
| private: |
| // Updates the layout manager which can have differing configuration |
| // depending on the visibility of different parts of the button bar. |
| void ViewVisibilityChanged(); |
| |
| // Overridden from views::View: |
| void ChildVisibilityChanged(views::View* child) override; |
| |
| // Overridden from views::ButtonListener: |
| void ButtonPressed(views::Button* sender, const ui::Event& event) override; |
| |
| MessageCenterView* message_center_view() const { |
| return message_center_view_; |
| } |
| MessageCenter* message_center() const { return message_center_; } |
| |
| MessageCenterView* message_center_view_; // Weak reference. |
| MessageCenter* message_center_; // Weak reference. |
| |
| // |close_bubble_button_| closes the message center bubble. This is required |
| // for desktop Linux because the status icon doesn't toggle the bubble, and |
| // close-on-deactivation is off. This is a tentative solution. Once pkotwicz |
| // Fixes the problem of focus-follow-mouse, close-on-deactivation will be |
| // back and this field will be removed. See crbug.com/319516. |
| #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| views::ImageButton* close_bubble_button_; |
| #endif |
| |
| // Sub-views of the button bar. |
| NotificationCenterButton* title_arrow_; |
| views::Label* notification_label_; |
| views::View* button_container_; |
| NotificationCenterButton* close_all_button_; |
| NotificationCenterButton* settings_button_; |
| NotificationCenterButton* quiet_mode_button_; |
| |
| DISALLOW_COPY_AND_ASSIGN(MessageCenterButtonBar); |
| }; |
| |
| } // namespace message_center |
| |
| #endif // UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_ |