15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUBBLE_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUBBLE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/weak_ptr.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/message_center/message_center_export.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/message_center/views/message_bubble_base.h" 112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "ui/views/widget/widget_observer.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace message_center { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MessageCenterView; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Bubble for message center. 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class MESSAGE_CENTER_EXPORT MessageCenterBubble 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public MessageBubbleBase, 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch public views::WidgetObserver, 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public base::SupportsWeakPtr<MessageCenterBubble> { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 23bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch MessageCenterBubble(MessageCenter* message_center, 24bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch MessageCenterTray* tray, 25bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch bool first_item_has_no_margin); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MessageCenterBubble(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetSettingsVisible(); 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // Overridden from views::WidgetObserver: 322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch virtual void OnWidgetClosing(views::Widget* widget) OVERRIDE; 332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Overridden from MessageBubbleBase: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::TrayBubbleView::InitParams GetInitParams( 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::TrayBubbleView::AnchorAlignment anchor_alignment) OVERRIDE; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InitializeContents(views::TrayBubbleView* bubble_view) OVERRIDE; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnBubbleViewDestroyed() OVERRIDE; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateBubbleView() OVERRIDE; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnMouseEnteredView() OVERRIDE; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnMouseExitedView() OVERRIDE; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t NumMessageViewsForTest() const; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MessageCenterView* message_center_view_; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The maximum height 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int max_height_; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Use settings view as the initially visible content if true. 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool initially_settings_visible_; 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 54bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // True if the first message which gets shown should have no margin against 55bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // the used anchor. 56bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch bool first_item_has_no_margin_; 57bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::string16 title_; 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MessageCenterBubble); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace message_center 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUBBLE_H_ 66