Home | History | Annotate | Download | only in infobars
      1 // Copyright (c) 2011 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_UI_VIEWS_INFOBARS_CONFIRM_INFOBAR_H_
      6 #define CHROME_BROWSER_UI_VIEWS_INFOBARS_CONFIRM_INFOBAR_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/compiler_specific.h"
     10 #include "chrome/browser/ui/views/infobars/infobar_view.h"
     11 #include "ui/views/controls/link_listener.h"
     12 
     13 class ConfirmInfoBarDelegate;
     14 class ElevationIconSetter;
     15 
     16 namespace views {
     17 class Label;
     18 }
     19 
     20 // An infobar that shows a message, up to two optional buttons, and an optional,
     21 // right-aligned link.  This is commonly used to do things like:
     22 // "Would you like to do X?  [Yes]  [No]               _Learn More_ [x]"
     23 class ConfirmInfoBar : public InfoBarView,
     24                        public views::LinkListener {
     25  public:
     26   explicit ConfirmInfoBar(scoped_ptr<ConfirmInfoBarDelegate> delegate);
     27 
     28  private:
     29   virtual ~ConfirmInfoBar();
     30 
     31   // InfoBarView:
     32   virtual void Layout() OVERRIDE;
     33   virtual void ViewHierarchyChanged(
     34       const ViewHierarchyChangedDetails& details) OVERRIDE;
     35   virtual void ButtonPressed(views::Button* sender,
     36                              const ui::Event& event) OVERRIDE;
     37   virtual int ContentMinimumWidth() const OVERRIDE;
     38 
     39   // views::LinkListener:
     40   virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
     41 
     42   ConfirmInfoBarDelegate* GetDelegate();
     43 
     44   // Returns the width of all content other than the label and link.  Layout()
     45   // uses this to determine how much space the label and link can take.
     46   int NonLabelWidth() const;
     47 
     48   views::Label* label_;
     49   views::LabelButton* ok_button_;
     50   views::LabelButton* cancel_button_;
     51   views::Link* link_;
     52   scoped_ptr<ElevationIconSetter> elevation_icon_setter_;
     53 
     54   DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBar);
     55 };
     56 
     57 #endif  // CHROME_BROWSER_UI_VIEWS_INFOBARS_CONFIRM_INFOBAR_H_
     58