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