Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Unified Diff: ui/message_center/views/message_center_button_bar.cc

Issue 20066003: Update notification settings to allow for multiprofile situations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: And remove unneeded include. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/message_center/views/message_center_button_bar.h ('k') | ui/message_center/views/message_center_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/message_center/views/message_center_button_bar.cc
diff --git a/ui/message_center/views/message_center_button_bar.cc b/ui/message_center/views/message_center_button_bar.cc
new file mode 100644
index 0000000000000000000000000000000000000000..8d9f7f95d3b56643ba1f41ea2bbd61f527f962df
--- /dev/null
+++ b/ui/message_center/views/message_center_button_bar.cc
@@ -0,0 +1,210 @@
+// Copyright (c) 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.
+
+#include "ui/message_center/views/message_center_button_bar.h"
+
+#include "grit/ui_resources.h"
+#include "grit/ui_strings.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/models/simple_menu_model.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/canvas.h"
+#include "ui/gfx/text_constants.h"
+#include "ui/message_center/message_center.h"
+#include "ui/message_center/message_center_style.h"
+#include "ui/message_center/notifier_settings.h"
+#include "ui/message_center/views/message_center_view.h"
+#include "ui/views/controls/button/button.h"
+#include "ui/views/controls/button/image_button.h"
+#include "ui/views/controls/button/label_button.h"
+#include "ui/views/controls/button/menu_button.h"
+#include "ui/views/controls/button/menu_button_listener.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/controls/menu/menu_runner.h"
+#include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/grid_layout.h"
+
+namespace message_center {
+
+namespace {
+const int kButtonSize = 40;
+const int kChevronMargin = 4;
+const int kFooterLeftMargin = 17;
+const int kFooterRightMargin = 14;
+} // namespace
+
+// NotificationCenterButton ////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+class NotificationCenterButton : public views::ToggleImageButton {
+ public:
+ NotificationCenterButton(views::ButtonListener* listener,
+ int normal_id,
+ int hover_id,
+ int pressed_id,
+ int text_id);
+
+ protected:
+ // Overridden from views::View:
+ virtual gfx::Size GetPreferredSize() OVERRIDE;
+ virtual void OnPaintFocusBorder(gfx::Canvas* canvas) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(NotificationCenterButton);
+};
+
+NotificationCenterButton::NotificationCenterButton(
+ views::ButtonListener* listener,
+ int normal_id,
+ int hover_id,
+ int pressed_id,
+ int text_id)
+ : views::ToggleImageButton(listener) {
+ ui::ResourceBundle& resource_bundle = ui::ResourceBundle::GetSharedInstance();
+ SetImage(STATE_NORMAL, resource_bundle.GetImageSkiaNamed(normal_id));
+ SetImage(STATE_HOVERED, resource_bundle.GetImageSkiaNamed(hover_id));
+ SetImage(STATE_PRESSED, resource_bundle.GetImageSkiaNamed(pressed_id));
+ SetImageAlignment(views::ImageButton::ALIGN_CENTER,
+ views::ImageButton::ALIGN_MIDDLE);
+ SetTooltipText(resource_bundle.GetLocalizedString(text_id));
+ set_focusable(true);
+ set_request_focus_on_press(false);
+}
+
+gfx::Size NotificationCenterButton::GetPreferredSize() {
+ return gfx::Size(kButtonSize, kButtonSize);
+}
+
+void NotificationCenterButton::OnPaintFocusBorder(gfx::Canvas* canvas) {
+ if (HasFocus() && (focusable() || IsAccessibilityFocusable())) {
+ canvas->DrawRect(gfx::Rect(2, 1, width() - 4, height() - 3),
+ kFocusBorderColor);
+ }
+}
+
+// MessageCenterButtonBar /////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+MessageCenterButtonBar::MessageCenterButtonBar(
+ MessageCenterView* message_center_view,
+ MessageCenter* message_center,
+ NotifierSettingsProvider* notifier_settings_provider,
+ bool settings_initially_visible)
+ : message_center_view_(message_center_view),
+ message_center_(message_center),
+ close_all_button_(NULL),
+ quiet_mode_button_(NULL) {
+ if (get_use_acceleration_when_possible())
+ SetPaintToLayer(true);
+ set_background(
+ views::Background::CreateSolidBackground(kMessageCenterBackgroundColor));
+
+ views::Label* notification_label = new views::Label(
+ l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_FOOTER_TITLE));
+ notification_label->SetAutoColorReadabilityEnabled(false);
+ notification_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ notification_label->SetEnabledColor(kRegularTextColor);
+ AddChildView(notification_label);
+
+ views::View* button_container = new views::View;
+ button_container->SetLayoutManager(
+ new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
+ quiet_mode_button_ = new NotificationCenterButton(
+ this,
+ IDR_NOTIFICATION_DO_NOT_DISTURB,
+ IDR_NOTIFICATION_DO_NOT_DISTURB_HOVER,
+ IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED,
+ IDS_MESSAGE_CENTER_QUIET_MODE_BUTTON_TOOLTIP);
+ ui::ResourceBundle& resource_bundle = ui::ResourceBundle::GetSharedInstance();
+ quiet_mode_button_->SetToggledImage(
+ views::Button::STATE_NORMAL,
+ resource_bundle.GetImageSkiaNamed(
+ IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED));
+ quiet_mode_button_->SetToggledImage(
+ views::Button::STATE_HOVERED,
+ resource_bundle.GetImageSkiaNamed(
+ IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED));
+ quiet_mode_button_->SetToggledImage(
+ views::Button::STATE_PRESSED,
+ resource_bundle.GetImageSkiaNamed(
+ IDR_NOTIFICATION_DO_NOT_DISTURB_PRESSED));
+ quiet_mode_button_->SetToggled(message_center->IsQuietMode());
+ button_container->AddChildView(quiet_mode_button_);
+
+ close_all_button_ =
+ new NotificationCenterButton(this,
+ IDR_NOTIFICATION_CLEAR_ALL,
+ IDR_NOTIFICATION_CLEAR_ALL_HOVER,
+ IDR_NOTIFICATION_CLEAR_ALL_PRESSED,
+ IDS_MESSAGE_CENTER_CLEAR_ALL);
+ button_container->AddChildView(close_all_button_);
+ settings_button_ =
+ new NotificationCenterButton(this,
+ IDR_NOTIFICATION_SETTINGS,
+ IDR_NOTIFICATION_SETTINGS_HOVER,
+ IDR_NOTIFICATION_SETTINGS_PRESSED,
+ IDS_MESSAGE_CENTER_SETTINGS_BUTTON_LABEL);
+ button_container->AddChildView(settings_button_);
+
+ gfx::ImageSkia* settings_image =
+ ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_NOTIFICATION_SETTINGS);
+ int image_margin = std::max(0, (kButtonSize - settings_image->width()) / 2);
+ views::GridLayout* layout = new views::GridLayout(this);
+ SetLayoutManager(layout);
+ layout->SetInsets(
+ 0, kFooterLeftMargin, 0, std::max(0, kFooterRightMargin - image_margin));
+ views::ColumnSet* column = layout->AddColumnSet(0);
+ column->AddColumn(views::GridLayout::FILL,
+ views::GridLayout::FILL,
+ 1.0f,
+ views::GridLayout::USE_PREF,
+ 0,
+ 0);
+ column->AddColumn(views::GridLayout::LEADING,
+ views::GridLayout::FILL,
+ 0,
+ views::GridLayout::USE_PREF,
+ 0,
+ 0);
+ layout->StartRow(0, 0);
+ layout->AddView(notification_label);
+ layout->AddView(button_container);
+}
+
+MessageCenterButtonBar::~MessageCenterButtonBar() {}
+
+void MessageCenterButtonBar::SetAllButtonsEnabled(bool enabled) {
+ if (close_all_button_)
+ close_all_button_->SetEnabled(enabled);
+ settings_button_->SetEnabled(enabled);
+ quiet_mode_button_->SetEnabled(enabled);
+}
+
+void MessageCenterButtonBar::SetCloseAllButtonVisible(bool visible) {
+ if (close_all_button_)
+ close_all_button_->SetVisible(visible);
+}
+
+void MessageCenterButtonBar::ChildVisibilityChanged(views::View* child) {
+ InvalidateLayout();
+}
+
+void MessageCenterButtonBar::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ if (sender == close_all_button_) {
+ message_center_view()->ClearAllNotifications();
+ } else if (sender == settings_button_) {
+ MessageCenterView* center_view = message_center_view();
+ center_view->SetSettingsVisible(!center_view->settings_visible());
+ } else if (sender == quiet_mode_button_) {
+ if (message_center()->IsQuietMode())
+ message_center()->SetQuietMode(false);
+ else
+ message_center()->EnterQuietModeWithExpire(base::TimeDelta::FromDays(1));
+ quiet_mode_button_->SetToggled(message_center()->IsQuietMode());
+ } else {
+ NOTREACHED();
+ }
+}
+
+} // namespace message_center
« no previous file with comments | « ui/message_center/views/message_center_button_bar.h ('k') | ui/message_center/views/message_center_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698