| // 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. |
| |
| #ifndef CHROME_BROWSER_UI_GLOBAL_ERROR_GLOBAL_ERROR_H_ |
| #define CHROME_BROWSER_UI_GLOBAL_ERROR_GLOBAL_ERROR_H_ |
| |
| #include <vector> |
| |
| #include "base/basictypes.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/strings/string16.h" |
| |
| class Browser; |
| class GlobalErrorBubbleViewBase; |
| |
| namespace gfx { |
| class Image; |
| } |
| |
| // This object describes a single global error. |
| class GlobalError { |
| public: |
| enum Severity { |
| SEVERITY_LOW, |
| SEVERITY_MEDIUM, |
| SEVERITY_HIGH, |
| }; |
| |
| GlobalError(); |
| virtual ~GlobalError(); |
| |
| // Returns the error's severity level. If there are multiple errors, |
| // the error with the highest severity will display in the menu. If not |
| // overridden, this is based on the badge resource ID. |
| virtual Severity GetSeverity(); |
| |
| // Returns true if a menu item should be added to the wrench menu. |
| virtual bool HasMenuItem() = 0; |
| // Returns the command ID for the menu item. |
| virtual int MenuItemCommandID() = 0; |
| // Returns the label for the menu item. |
| virtual base::string16 MenuItemLabel() = 0; |
| // Returns the resource ID for the menu item icon. |
| int MenuItemIconResourceID(); |
| // Called when the user clicks on the menu item. |
| virtual void ExecuteMenuItem(Browser* browser) = 0; |
| |
| // Returns true if a bubble view should be shown. |
| virtual bool HasBubbleView() = 0; |
| // Returns true if the bubble view has been shown. |
| virtual bool HasShownBubbleView() = 0; |
| // Called to show the bubble view. |
| virtual void ShowBubbleView(Browser* browser) = 0; |
| // Returns the bubble view. |
| virtual GlobalErrorBubbleViewBase* GetBubbleView() = 0; |
| }; |
| |
| // This object describes a single global error that already comes with support |
| // for showing a standard Bubble UI. Derived classes just need to supply the |
| // content to be displayed in the bubble. |
| class GlobalErrorWithStandardBubble |
| : public GlobalError, |
| public base::SupportsWeakPtr<GlobalErrorWithStandardBubble> { |
| public: |
| GlobalErrorWithStandardBubble(); |
| virtual ~GlobalErrorWithStandardBubble(); |
| |
| // Returns an icon to use for the bubble view. |
| virtual gfx::Image GetBubbleViewIcon(); |
| // Returns the title for the bubble view. |
| virtual base::string16 GetBubbleViewTitle() = 0; |
| // Returns the messages for the bubble view, one per line. Multiple messages |
| // are only supported on Views. |
| // TODO(yoz): Add multi-line support for GTK and Cocoa. |
| virtual std::vector<base::string16> GetBubbleViewMessages() = 0; |
| // Returns the accept button label for the bubble view. |
| virtual base::string16 GetBubbleViewAcceptButtonLabel() = 0; |
| // Returns the cancel button label for the bubble view. To hide the cancel |
| // button return an empty string. |
| virtual base::string16 GetBubbleViewCancelButtonLabel() = 0; |
| // Called when the bubble view is closed. |browser| is the Browser that the |
| // bubble view was shown on. |
| void BubbleViewDidClose(Browser* browser); |
| // Notifies subclasses that the bubble view is closed. |browser| is the |
| // Browser that the bubble view was shown on. |
| virtual void OnBubbleViewDidClose(Browser* browser) = 0; |
| // Called when the user clicks on the accept button. |browser| is the |
| // Browser that the bubble view was shown on. |
| virtual void BubbleViewAcceptButtonPressed(Browser* browser) = 0; |
| // Called when the user clicks the cancel button. |browser| is the |
| // Browser that the bubble view was shown on. |
| virtual void BubbleViewCancelButtonPressed(Browser* browser) = 0; |
| |
| // GlobalError overrides: |
| virtual bool HasBubbleView() OVERRIDE; |
| virtual bool HasShownBubbleView() OVERRIDE; |
| virtual void ShowBubbleView(Browser* browser) OVERRIDE; |
| virtual GlobalErrorBubbleViewBase* GetBubbleView() OVERRIDE; |
| |
| private: |
| bool has_shown_bubble_view_; |
| GlobalErrorBubbleViewBase* bubble_view_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GlobalErrorWithStandardBubble); |
| }; |
| |
| #endif // CHROME_BROWSER_UI_GLOBAL_ERROR_GLOBAL_ERROR_H_ |