1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_UI_ECHO_DIALOG_VIEW_H_ 6 #define CHROME_BROWSER_CHROMEOS_UI_ECHO_DIALOG_VIEW_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "ui/views/controls/styled_label_listener.h" 11 #include "ui/views/window/dialog_delegate.h" 12 13 namespace views { 14 class StyledLabel; 15 } 16 17 namespace chromeos { 18 19 class EchoDialogListener; 20 21 // Dialog shown by echoPrivate extension API when getUserConsent function is 22 // called. The API is used by echo extension when an offer from a service is 23 // being redeemed. The dialog is shown to get an user consent. If the echo 24 // extension is not allowed by policy to redeem offers, the dialog informs user 25 // about this. 26 class EchoDialogView : public views::DialogDelegateView, 27 public views::StyledLabelListener { 28 public: 29 explicit EchoDialogView(EchoDialogListener* listener); 30 virtual ~EchoDialogView(); 31 32 // Initializes dialog layout that will be showed when echo extension is 33 // allowed to redeem offers. |service_name| is the name of the service that 34 // requests user consent to redeem an offer. |origin| is the service's origin 35 // url. Service name should be underlined in the dialog, and hovering over its 36 // label should display tooltip containing |origin|. 37 // The dialog will have both OK and Cancel buttons. 38 void InitForEnabledEcho(const base::string16& service_name, const base::string16& origin); 39 40 // Initializes dialog layout that will be shown when echo extension is not 41 // allowed to redeem offers. The dialog will be showing a message that the 42 // offer redeeming is disabled by policy. 43 // The dialog will have only Cancel button. 44 void InitForDisabledEcho(); 45 46 // Shows the dialog. 47 void Show(gfx::NativeWindow parent); 48 49 private: 50 friend class ExtensionEchoPrivateApiTest; 51 52 // views::DialogDelegate overrides. 53 virtual int GetDialogButtons() const OVERRIDE; 54 virtual int GetDefaultDialogButton() const OVERRIDE; 55 virtual base::string16 GetDialogButtonLabel(ui::DialogButton button) const OVERRIDE; 56 virtual bool Cancel() OVERRIDE; 57 virtual bool Accept() OVERRIDE; 58 59 // views::WidgetDelegate overrides. 60 virtual ui::ModalType GetModalType() const OVERRIDE; 61 virtual bool ShouldShowWindowTitle() const OVERRIDE; 62 virtual bool ShouldShowWindowIcon() const OVERRIDE; 63 64 // views::LinkListener override. 65 virtual void StyledLabelLinkClicked(const gfx::Range& range, 66 int event_flags) OVERRIDE; 67 68 // views::View override. 69 virtual gfx::Size GetPreferredSize() OVERRIDE; 70 71 // Sets the border and bounds for the styled label containing the dialog 72 // text. 73 void SetLabelBorderAndBounds(); 74 75 views::StyledLabel* label_; 76 EchoDialogListener* listener_; 77 int ok_button_label_id_; 78 int cancel_button_label_id_; 79 80 DISALLOW_COPY_AND_ASSIGN(EchoDialogView); 81 }; 82 83 } // namespace chromeos 84 85 #endif // CHROME_BROWSER_CHROMEOS_UI_ECHO_DIALOG_VIEW_H_ 86