// Copyright 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. #ifndef ASH_POPUP_MESSAGE_H_ #define ASH_POPUP_MESSAGE_H_ #include "ash/ash_export.h" #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/strings/string16.h" #include "ui/gfx/geometry/rect.h" #include "ui/views/bubble/bubble_border.h" namespace views { class BubbleDelegateView; class Widget; } namespace ash { // PopupMessage shows a message to the user. Since the user is not able to // dismiss it, the calling code needs to explictly close and destroy it. class ASH_EXPORT PopupMessage { public: enum IconType { ICON_WARNING, ICON_NONE }; // Creates a message pointing towards |anchor| with the requested // |arrow_orientation|. The message contains an optional |caption| which is // drawn in bold and an optional |message| together with an optional icon of // shape |message_type|. If a component in |size_override| is not 0 the value // is the used as output size. If |arrow_offset| is not 0, the number is the // arrow offset in pixels from the border. // // Here is the layout (arrow given as TOP_LEFT): // |--------| // | Anchor | // |--------| // |-arrow_offset---^ // +-------------------------------------------------+ // -| |- // icon | [!] Caption in bold which can be multi line | caption_label // -| |- // | Message text which can be multi line | message_label // | as well. | // | |- // +-------------------------------------------------+ PopupMessage(const base::string16& caption, const base::string16& message, IconType message_type, views::View* anchor, views::BubbleBorder::Arrow arrow, const gfx::Size& size_override, int arrow_offset); // If the message was not explicitly closed before, it closes the message // without animation. virtual ~PopupMessage(); // Closes the message with a fade out animation. void Close(); private: FRIEND_TEST_ALL_PREFIXES(PopupMessageTest, Layout); class MessageBubble; static const int kCaptionLabelID; static const int kMessageLabelID; void CancelHidingAnimation(); MessageBubble* view_; views::Widget* widget_; base::string16 caption_; base::string16 message_; DISALLOW_COPY_AND_ASSIGN(PopupMessage); }; } // namespace ash #endif // ASH_POPUP_MESSAGE_H_