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