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

Unified Diff: ash/system/tray/tray_notification_view.cc

Issue 10694043: Handle gesture events in notifications. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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
Index: ash/system/tray/tray_notification_view.cc
diff --git a/ash/system/tray/tray_notification_view.cc b/ash/system/tray/tray_notification_view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6c8c8b5b556cfb03f37d93a980c97b8b3cf3baf0
--- /dev/null
+++ b/ash/system/tray/tray_notification_view.cc
@@ -0,0 +1,142 @@
+// Copyright (c) 2012 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 "ash/system/tray/tray_notification_view.h"
+
+#include "ash/system/tray/system_tray_item.h"
+#include "ash/system/tray/tray_constants.h"
+#include "grit/ash_strings.h"
+#include "grit/ui_resources_standard.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/image/image_skia.h"
+#include "ui/views/controls/button/image_button.h"
+#include "ui/views/controls/image_view.h"
+#include "ui/views/layout/grid_layout.h"
+
+namespace ash {
+namespace internal {
+
+TrayNotificationView::TrayNotificationView(SystemTrayItem* tray, int icon_id)
+ : tray_(tray),
+ icon_id_(icon_id),
+ icon_(NULL) {
+}
+
+TrayNotificationView::~TrayNotificationView() {
+}
+
+void TrayNotificationView::InitView(views::View* contents) {
stevenjb 2012/06/29 22:37:02 InitView through UpdateViewAndImage are unchanged.
+ set_background(views::Background::CreateSolidBackground(kBackgroundColor));
+
+ views::GridLayout* layout = new views::GridLayout(this);
+ SetLayoutManager(layout);
+
+ views::ImageButton* close_button = new views::ImageButton(this);
+ close_button->SetImage(views::CustomButton::BS_NORMAL,
+ ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_AURA_WINDOW_CLOSE));
+
+ icon_ = new views::ImageView;
+ if (icon_id_ != 0) {
+ icon_->SetImage(
+ ResourceBundle::GetSharedInstance().GetImageSkiaNamed(icon_id_));
+ }
+
+ views::ColumnSet* columns = layout->AddColumnSet(0);
+
+ columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
+
+ // Icon
+ columns->AddColumn(views::GridLayout::CENTER, views::GridLayout::CENTER,
+ 0, /* resize percent */
+ views::GridLayout::FIXED,
+ kNotificationIconWidth, kNotificationIconWidth);
+
+ columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
+
+ // Contents
+ columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
+ 0, /* resize percent */
+ views::GridLayout::FIXED,
+ kTrayNotificationContentsWidth,
+ kTrayNotificationContentsWidth);
+
+ columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
+
+ // Close button
+ columns->AddColumn(views::GridLayout::CENTER, views::GridLayout::CENTER,
+ 0, /* resize percent */
+ views::GridLayout::FIXED,
+ kNotificationIconWidth, kNotificationIconWidth);
+
+ columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
+
+ // Layout rows
+ layout->AddPaddingRow(0, kTrayPopupPaddingBetweenItems);
+ layout->StartRow(0, 0);
+ layout->AddView(icon_);
+ layout->AddView(contents);
+ layout->AddView(close_button);
+ layout->AddPaddingRow(0, kTrayPopupPaddingBetweenItems);
+}
+
+void TrayNotificationView::SetIconImage(const gfx::ImageSkia& image) {
+ icon_->SetImage(image);
+ SchedulePaint();
+}
+
+void TrayNotificationView::UpdateView(views::View* new_contents) {
+ RemoveAllChildViews(true);
+ InitView(new_contents);
+ Layout();
+ PreferredSizeChanged();
+ SchedulePaint();
+}
+
+void TrayNotificationView::UpdateViewAndImage(views::View* new_contents,
+ const gfx::ImageSkia& image) {
+ RemoveAllChildViews(true);
+ InitView(new_contents);
+ icon_->SetImage(image);
+ Layout();
+ PreferredSizeChanged();
+ SchedulePaint();
+}
+
stevenjb 2012/06/29 22:37:02 Changed code starts here:
+void TrayNotificationView::ButtonPressed(views::Button* sender,
+ const views::Event& event) {
+ HandleClose();
+}
+
+bool TrayNotificationView::OnMousePressed(const views::MouseEvent& event) {
+ HandleClickAction();
+ return true;
+}
+
+ui::GestureStatus TrayNotificationView::OnGestureEvent(
+ const views::GestureEvent& event) {
+ if (event.type() != ui::ET_GESTURE_TAP)
+ return ui::GESTURE_STATUS_UNKNOWN;
+ HandleClickAction();
+ return ui::GESTURE_STATUS_CONSUMED;
+}
+
+void TrayNotificationView::OnClose() {
+}
+
+void TrayNotificationView::OnClickAction() {
+}
+
+void TrayNotificationView::HandleClose() {
+ OnClose();
+ tray_->HideNotificationView();
+}
+
+void TrayNotificationView::HandleClickAction() {
+ HandleClose();
+ OnClickAction();
+}
+
+} // namespace internal
+} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698