1bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// found in the LICENSE file.
4bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
5bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/message_center/views/message_center_button_bar.h"
6bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
7bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "grit/ui_resources.h"
8bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "grit/ui_strings.h"
9bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/base/l10n/l10n_util.h"
10bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/base/models/simple_menu_model.h"
11bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/base/resource/resource_bundle.h"
12bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/gfx/canvas.h"
13bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/gfx/text_constants.h"
14bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/message_center/message_center.h"
15bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/message_center/message_center_style.h"
16bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/message_center/notifier_settings.h"
17bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/message_center/views/message_center_view.h"
18bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/button/button.h"
19bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/button/image_button.h"
20bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/button/label_button.h"
21bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/button/menu_button.h"
22bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/button/menu_button_listener.h"
23bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/label.h"
24bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/controls/menu/menu_runner.h"
25bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/layout/box_layout.h"
26bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "ui/views/layout/grid_layout.h"
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/views/painter.h"
28bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
29bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochnamespace message_center {
30bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
31bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochnamespace {
32bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochconst int kButtonSize = 40;
33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochconst int kChevronWidth = 8;
340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)const int kFooterTopMargin = 6;
350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)const int kFooterBottomMargin = 3;
36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochconst int kFooterLeftMargin = 20;
37bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochconst int kFooterRightMargin = 14;
38bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}  // namespace
39bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
40bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// NotificationCenterButton ////////////////////////////////////////////////////
41bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch////////////////////////////////////////////////////////////////////////////////
42bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochclass NotificationCenterButton : public views::ToggleImageButton {
43bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch public:
44bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  NotificationCenterButton(views::ButtonListener* listener,
45bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                           int normal_id,
46bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                           int hover_id,
47bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                           int pressed_id,
48bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                           int text_id);
49ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  void set_size(gfx::Size size) { size_ = size; }
50bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
51bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch protected:
52bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  // Overridden from views::View:
53bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  virtual gfx::Size GetPreferredSize() OVERRIDE;
54bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
55bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch private:
56ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  gfx::Size size_;
57ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
58bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(NotificationCenterButton);
59bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch};
60bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
61bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben MurdochNotificationCenterButton::NotificationCenterButton(
62bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    views::ButtonListener* listener,
63bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    int normal_id,
64bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    int hover_id,
65bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    int pressed_id,
66bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    int text_id)
67ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    : views::ToggleImageButton(listener), size_(kButtonSize, kButtonSize) {
68bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  ui::ResourceBundle& resource_bundle = ui::ResourceBundle::GetSharedInstance();
69bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  SetImage(STATE_NORMAL, resource_bundle.GetImageSkiaNamed(normal_id));
70bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  SetImage(STATE_HOVERED, resource_bundle.GetImageSkiaNamed(hover_id));
71bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  SetImage(STATE_PRESSED, resource_bundle.GetImageSkiaNamed(pressed_id));
72bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  SetImageAlignment(views::ImageButton::ALIGN_CENTER,
73bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    views::ImageButton::ALIGN_MIDDLE);
74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (text_id)
75ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    SetTooltipText(resource_bundle.GetLocalizedString(text_id));
76ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
77d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  SetFocusable(true);
78bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  set_request_focus_on_press(false);
79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  SetFocusPainter(views::Painter::CreateSolidFocusPainter(
81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      kFocusBorderColor,
82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      gfx::Insets(1, 2, 2, 2)));
83bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}
84bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
85ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochgfx::Size NotificationCenterButton::GetPreferredSize() { return size_; }
86bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
87bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch// MessageCenterButtonBar /////////////////////////////////////////////////////
88bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch///////////////////////////////////////////////////////////////////////////////
89bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben MurdochMessageCenterButtonBar::MessageCenterButtonBar(
90bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    MessageCenterView* message_center_view,
91bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    MessageCenter* message_center,
92bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    NotifierSettingsProvider* notifier_settings_provider,
93bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    bool settings_initially_visible)
94bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    : message_center_view_(message_center_view),
95bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      message_center_(message_center),
96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      title_arrow_(NULL),
97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      notification_label_(NULL),
98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      button_container_(NULL),
99bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      close_all_button_(NULL),
100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      settings_button_(NULL),
101bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      quiet_mode_button_(NULL) {
102bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  if (get_use_acceleration_when_possible())
103bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    SetPaintToLayer(true);
104bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  set_background(
105bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      views::Background::CreateSolidBackground(kMessageCenterBackgroundColor));
106bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  ui::ResourceBundle& resource_bundle = ui::ResourceBundle::GetSharedInstance();
108ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
109ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  title_arrow_ = new NotificationCenterButton(this,
110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                                              IDR_NOTIFICATION_ARROW,
111ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                                              IDR_NOTIFICATION_ARROW_HOVER,
112ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                                              IDR_NOTIFICATION_ARROW_PRESSED,
113ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                                              0);
114ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  title_arrow_->set_size(gfx::Size(kChevronWidth, kButtonSize));
115ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
116ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Keyboardists can use the gear button to switch modes.
117d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  title_arrow_->SetFocusable(false);
118ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  AddChildView(title_arrow_);
119bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
120ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  gfx::Font notification_label_font =
121ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::BaseFont);
122ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  notification_label_ = new views::Label(
123ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_FOOTER_TITLE),
124ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      notification_label_font);
125ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  notification_label_->SetAutoColorReadabilityEnabled(false);
126ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  notification_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
127ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  notification_label_->SetEnabledColor(kRegularTextColor);
128ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  AddChildView(notification_label_);
129ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
130ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  button_container_ = new views::View;
131ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  button_container_->SetLayoutManager(
132bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
133bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  quiet_mode_button_ = new NotificationCenterButton(
134bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      this,
135bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      IDR_NOTIFICATION_DO_NOT_DISTURB,
136bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      IDR_NOTIFICATION_DO_NOT_DISTURB_HOVER,
137bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED,
138bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      IDS_MESSAGE_CENTER_QUIET_MODE_BUTTON_TOOLTIP);
139bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  quiet_mode_button_->SetToggledImage(
140bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      views::Button::STATE_NORMAL,
141bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      resource_bundle.GetImageSkiaNamed(
142bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch          IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED));
143bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  quiet_mode_button_->SetToggledImage(
144bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      views::Button::STATE_HOVERED,
145bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      resource_bundle.GetImageSkiaNamed(
146bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch          IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED));
147bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  quiet_mode_button_->SetToggledImage(
148bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      views::Button::STATE_PRESSED,
149bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      resource_bundle.GetImageSkiaNamed(
150bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch          IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED));
151bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  quiet_mode_button_->SetToggled(message_center->IsQuietMode());
152ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  button_container_->AddChildView(quiet_mode_button_);
153bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
154bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  close_all_button_ =
155bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      new NotificationCenterButton(this,
156bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDR_NOTIFICATION_CLEAR_ALL,
157bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDR_NOTIFICATION_CLEAR_ALL_HOVER,
158bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDR_NOTIFICATION_CLEAR_ALL_PRESSED,
159bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDS_MESSAGE_CENTER_CLEAR_ALL);
1603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  close_all_button_->SetImage(
1613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      views::Button::STATE_DISABLED,
1623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      resource_bundle.GetImageSkiaNamed(IDR_NOTIFICATION_CLEAR_ALL_DISABLED));
163ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  button_container_->AddChildView(close_all_button_);
1643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
165bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  settings_button_ =
166bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      new NotificationCenterButton(this,
167bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDR_NOTIFICATION_SETTINGS,
168bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDR_NOTIFICATION_SETTINGS_HOVER,
169bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDR_NOTIFICATION_SETTINGS_PRESSED,
170bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                   IDS_MESSAGE_CENTER_SETTINGS_BUTTON_LABEL);
171ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  button_container_->AddChildView(settings_button_);
172bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
173ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  SetCloseAllButtonEnabled(!settings_initially_visible);
174ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  SetBackArrowVisible(settings_initially_visible);
175ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  ViewVisibilityChanged();
176ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
177ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
178ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid MessageCenterButtonBar::ViewVisibilityChanged() {
179bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  gfx::ImageSkia* settings_image =
180bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
181bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch          IDR_NOTIFICATION_SETTINGS);
182bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  int image_margin = std::max(0, (kButtonSize - settings_image->width()) / 2);
183bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  views::GridLayout* layout = new views::GridLayout(this);
184bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  SetLayoutManager(layout);
1850f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  layout->SetInsets(kFooterTopMargin,
1860f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)                    kFooterLeftMargin,
1870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)                    kFooterBottomMargin,
1880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)                    std::max(0, kFooterRightMargin - image_margin));
189bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  views::ColumnSet* column = layout->AddColumnSet(0);
190ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (title_arrow_->visible()) {
191ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    // Column for the left-arrow used to back out of settings.
192ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    column->AddColumn(views::GridLayout::LEADING,
193ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                      views::GridLayout::CENTER,
194ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                      0.0f,
195ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                      views::GridLayout::USE_PREF,
196ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                      0,
197ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                      0);
198ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
199ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    column->AddPaddingColumn(0.0f, 10);
200ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  }
201ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
202ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Column for the label "Notifications".
203ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  column->AddColumn(views::GridLayout::LEADING,
204ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                    views::GridLayout::CENTER,
205ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                    0.0f,
206bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    views::GridLayout::USE_PREF,
207bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    0,
208bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    0);
209ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
210ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Fills in the remaining space between "Notifications" and buttons.
211ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  column->AddPaddingColumn(1.0f, image_margin);
212ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
213ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // The button area column.
214bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  column->AddColumn(views::GridLayout::LEADING,
215ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                    views::GridLayout::CENTER,
216ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch                    0.0f,
217bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    views::GridLayout::USE_PREF,
218bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    0,
219bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                    0);
220ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
221bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  layout->StartRow(0, 0);
222ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (title_arrow_->visible())
223ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    layout->AddView(title_arrow_);
224ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  layout->AddView(notification_label_);
225ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  layout->AddView(button_container_);
226bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}
227bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
228bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben MurdochMessageCenterButtonBar::~MessageCenterButtonBar() {}
229bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
230bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochvoid MessageCenterButtonBar::SetAllButtonsEnabled(bool enabled) {
231bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  if (close_all_button_)
232bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    close_all_button_->SetEnabled(enabled);
233bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  settings_button_->SetEnabled(enabled);
234bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  quiet_mode_button_->SetEnabled(enabled);
235bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}
236bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
237ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid MessageCenterButtonBar::SetCloseAllButtonEnabled(bool enabled) {
238bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  if (close_all_button_)
239ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    close_all_button_->SetEnabled(enabled);
240ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
241ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
242ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid MessageCenterButtonBar::SetBackArrowVisible(bool visible) {
243ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (title_arrow_)
244ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    title_arrow_->SetVisible(visible);
245ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  ViewVisibilityChanged();
246ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  Layout();
247bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}
248bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
249bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochvoid MessageCenterButtonBar::ChildVisibilityChanged(views::View* child) {
250bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  InvalidateLayout();
251bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}
252bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
253bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochvoid MessageCenterButtonBar::ButtonPressed(views::Button* sender,
254bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch                                           const ui::Event& event) {
255bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  if (sender == close_all_button_) {
256bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    message_center_view()->ClearAllNotifications();
257ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  } else if (sender == settings_button_ || sender == title_arrow_) {
258bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    MessageCenterView* center_view = message_center_view();
259bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    center_view->SetSettingsVisible(!center_view->settings_visible());
260bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  } else if (sender == quiet_mode_button_) {
261bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    if (message_center()->IsQuietMode())
262bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      message_center()->SetQuietMode(false);
263bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    else
264bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch      message_center()->EnterQuietModeWithExpire(base::TimeDelta::FromDays(1));
265bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    quiet_mode_button_->SetToggled(message_center()->IsQuietMode());
266bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  } else {
267bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch    NOTREACHED();
268bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  }
269bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}
270bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
271bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch}  // namespace message_center
272