OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/system/web_notification/web_notification_tray.h" | 5 #include "ash/system/web_notification/web_notification_tray.h" |
6 | 6 |
7 #include "ash/system/status_area_widget.h" | 7 #include "ash/system/status_area_widget.h" |
8 #include "ash/system/tray/system_tray.h" | 8 #include "ash/system/tray/system_tray.h" |
9 #include "ash/system/tray/tray_bubble_view.h" | 9 #include "ash/system/tray/tray_bubble_view.h" |
10 #include "ash/system/tray/tray_constants.h" | 10 #include "ash/system/tray/tray_constants.h" |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 | 475 |
476 private: | 476 private: |
477 WebNotificationTray* tray_; | 477 WebNotificationTray* tray_; |
478 TrayPopupTextButton* close_all_button_; | 478 TrayPopupTextButton* close_all_button_; |
479 | 479 |
480 DISALLOW_COPY_AND_ASSIGN(WebNotificationButtonView); | 480 DISALLOW_COPY_AND_ASSIGN(WebNotificationButtonView); |
481 }; | 481 }; |
482 | 482 |
483 class WebContentsView : public views::View { | 483 class WebContentsView : public views::View { |
484 public: | 484 public: |
485 WebContentsView() {} | 485 explicit WebContentsView(WebNotificationTray* tray) |
| 486 : tray_(tray) { |
| 487 // TODO(stevenjb): Remove this border when TrayBubbleBorder is integrated |
| 488 // with BubbleBorder. |
| 489 int left = (tray->shelf_alignment() == SHELF_ALIGNMENT_LEFT) ? 0 : 1; |
| 490 int right = (tray->shelf_alignment() == SHELF_ALIGNMENT_RIGHT) ? 0 : 1; |
| 491 int bottom = (tray->shelf_alignment() == SHELF_ALIGNMENT_BOTTOM) ? 0 : 1; |
| 492 set_border(views::Border::CreateSolidSidedBorder( |
| 493 1, left, bottom, right, ash::kBorderDarkColor)); |
| 494 set_notify_enter_exit_on_child(true); |
| 495 } |
486 virtual ~WebContentsView() {} | 496 virtual ~WebContentsView() {} |
487 | 497 |
488 virtual void Update( | 498 virtual void Update( |
489 const WebNotificationList::Notifications& notifications) = 0; | 499 const WebNotificationList::Notifications& notifications) = 0; |
490 | 500 |
| 501 protected: |
| 502 WebNotificationTray* tray_; |
| 503 |
491 private: | 504 private: |
492 DISALLOW_COPY_AND_ASSIGN(WebContentsView); | 505 DISALLOW_COPY_AND_ASSIGN(WebContentsView); |
493 }; | 506 }; |
494 | 507 |
495 class MessageCenterContentsView : public WebContentsView { | 508 class MessageCenterContentsView : public WebContentsView { |
496 public: | 509 public: |
497 explicit MessageCenterContentsView(WebNotificationTray* tray) | 510 explicit MessageCenterContentsView(WebNotificationTray* tray) |
498 : tray_(tray) { | 511 : WebContentsView(tray) { |
499 set_border(views::Border::CreateSolidSidedBorder( | |
500 1, 1, 1, 1, ash::kBorderDarkColor)); | |
501 | |
502 SetLayoutManager( | 512 SetLayoutManager( |
503 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); | 513 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
504 set_background(views::Background::CreateSolidBackground(kBackgroundColor)); | 514 set_background(views::Background::CreateSolidBackground(kBackgroundColor)); |
505 | 515 |
506 scroll_content_ = new views::View; | 516 scroll_content_ = new views::View; |
507 scroll_content_->SetLayoutManager( | 517 scroll_content_->SetLayoutManager( |
508 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); | 518 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
509 | 519 |
510 scroller_ = new internal::FixedSizedScrollView; | 520 scroller_ = new internal::FixedSizedScrollView; |
511 scroller_->SetContentsView(scroll_content_); | 521 scroller_->SetContentsView(scroll_content_); |
(...skipping 23 matching lines...) Expand all Loading... |
535 int button_height = button_view_->GetPreferredSize().height(); | 545 int button_height = button_view_->GetPreferredSize().height(); |
536 int scroll_height = std::min( | 546 int scroll_height = std::min( |
537 std::max(scroll_size.height(), | 547 std::max(scroll_size.height(), |
538 kWebNotificationBubbleMinHeight - button_height), | 548 kWebNotificationBubbleMinHeight - button_height), |
539 kWebNotificationBubbleMaxHeight - button_height); | 549 kWebNotificationBubbleMaxHeight - button_height); |
540 scroll_size.set_height(scroll_height); | 550 scroll_size.set_height(scroll_height); |
541 scroller_->SetFixedSize(scroll_size); | 551 scroller_->SetFixedSize(scroll_size); |
542 scroller_->SizeToPreferredSize(); | 552 scroller_->SizeToPreferredSize(); |
543 } | 553 } |
544 | 554 |
545 WebNotificationTray* tray_; | |
546 internal::FixedSizedScrollView* scroller_; | 555 internal::FixedSizedScrollView* scroller_; |
547 views::View* scroll_content_; | 556 views::View* scroll_content_; |
548 internal::WebNotificationButtonView* button_view_; | 557 internal::WebNotificationButtonView* button_view_; |
549 | 558 |
550 DISALLOW_COPY_AND_ASSIGN(MessageCenterContentsView); | 559 DISALLOW_COPY_AND_ASSIGN(MessageCenterContentsView); |
551 }; | 560 }; |
552 | 561 |
553 class WebNotificationContentsView : public WebContentsView { | 562 class WebNotificationContentsView : public WebContentsView { |
554 public: | 563 public: |
555 explicit WebNotificationContentsView(WebNotificationTray* tray) | 564 explicit WebNotificationContentsView(WebNotificationTray* tray) |
556 : tray_(tray) { | 565 : WebContentsView(tray) { |
557 set_border(views::Border::CreateSolidSidedBorder( | |
558 1, 1, 1, 1, ash::kBorderDarkColor)); | |
559 | |
560 SetLayoutManager( | 566 SetLayoutManager( |
561 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); | 567 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
562 set_background(views::Background::CreateSolidBackground(kBackgroundColor)); | 568 set_background(views::Background::CreateSolidBackground(kBackgroundColor)); |
563 | 569 |
564 content_ = new views::View; | 570 content_ = new views::View; |
565 content_->SetLayoutManager( | 571 content_->SetLayoutManager( |
566 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); | 572 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
567 AddChildView(content_); | 573 AddChildView(content_); |
568 } | 574 } |
569 | 575 |
570 void Update(const WebNotificationList::Notifications& notifications) { | 576 void Update(const WebNotificationList::Notifications& notifications) { |
571 content_->RemoveAllChildViews(true); | 577 content_->RemoveAllChildViews(true); |
572 WebNotificationList::Notifications::const_iterator iter = | 578 WebNotificationList::Notifications::const_iterator iter = |
573 notifications.begin(); | 579 notifications.begin(); |
574 WebNotificationView* view = new WebNotificationView(tray_, *iter); | 580 WebNotificationView* view = new WebNotificationView(tray_, *iter); |
575 content_->AddChildView(view); | 581 content_->AddChildView(view); |
576 GetWidget()->GetRootView()->SchedulePaint(); | 582 GetWidget()->GetRootView()->SchedulePaint(); |
577 } | 583 } |
578 | 584 |
579 private: | 585 private: |
580 WebNotificationTray* tray_; | |
581 views::View* content_; | 586 views::View* content_; |
582 | 587 |
583 DISALLOW_COPY_AND_ASSIGN(WebNotificationContentsView); | 588 DISALLOW_COPY_AND_ASSIGN(WebNotificationContentsView); |
584 }; | 589 }; |
585 | 590 |
586 } // namespace internal | 591 } // namespace internal |
587 | 592 |
588 using internal::TrayBubbleView; | 593 using internal::TrayBubbleView; |
589 using internal::WebNotificationList; | 594 using internal::WebNotificationList; |
590 using internal::WebContentsView; | 595 using internal::WebContentsView; |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 | 936 |
932 void WebNotificationTray::HideBubble(Bubble* bubble) { | 937 void WebNotificationTray::HideBubble(Bubble* bubble) { |
933 if (bubble == message_center_bubble()) { | 938 if (bubble == message_center_bubble()) { |
934 HideMessageCenterBubble(); | 939 HideMessageCenterBubble(); |
935 } else if (bubble == notification_bubble()) { | 940 } else if (bubble == notification_bubble()) { |
936 notification_bubble_.reset(); | 941 notification_bubble_.reset(); |
937 } | 942 } |
938 } | 943 } |
939 | 944 |
940 } // namespace ash | 945 } // namespace ash |
OLD | NEW |