Home | History | Annotate | Download | only in button
      1 // Copyright (c) 2012 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 UI_VIEWS_CONTROLS_BUTTON_CHECKBOX_H_
      6 #define UI_VIEWS_CONTROLS_BUTTON_CHECKBOX_H_
      7 
      8 #include <string>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "base/strings/string16.h"
     12 #include "ui/views/controls/button/label_button.h"
     13 
     14 namespace views {
     15 
     16 // A native themed class representing a checkbox.  This class does not use
     17 // platform specific objects to replicate the native platforms looks and feel.
     18 class VIEWS_EXPORT Checkbox : public LabelButton {
     19  public:
     20   static const char kViewClassName[];
     21 
     22   explicit Checkbox(const string16& label);
     23   virtual ~Checkbox();
     24 
     25   // Sets a listener for this checkbox. Checkboxes aren't required to have them
     26   // since their state can be read independently of them being toggled.
     27   void set_listener(ButtonListener* listener) { listener_ = listener; }
     28 
     29   // Sets/Gets whether or not the checkbox is checked.
     30   virtual void SetChecked(bool checked);
     31   bool checked() const { return checked_; }
     32 
     33  protected:
     34   // Overridden from LabelButton:
     35   virtual void Layout() OVERRIDE;
     36   virtual const char* GetClassName() const OVERRIDE;
     37   virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
     38   virtual void OnFocus() OVERRIDE;
     39   virtual void OnBlur() OVERRIDE;
     40   virtual const gfx::ImageSkia& GetImage(ButtonState for_state) OVERRIDE;
     41 
     42   // Set the image shown for each button state depending on whether it is
     43   // [checked] or [focused].
     44   void SetCustomImage(bool checked,
     45                       bool focused,
     46                       ButtonState for_state,
     47                       const gfx::ImageSkia& image);
     48 
     49  private:
     50   // Overridden from Button:
     51   virtual void NotifyClick(const ui::Event& event) OVERRIDE;
     52 
     53   virtual ui::NativeTheme::Part GetThemePart() const OVERRIDE;
     54   virtual void GetExtraParams(
     55       ui::NativeTheme::ExtraParams* params) const OVERRIDE;
     56 
     57   // True if the checkbox is checked.
     58   bool checked_;
     59 
     60   // The images for each button state.
     61   gfx::ImageSkia images_[2][2][STATE_COUNT];
     62 
     63   DISALLOW_COPY_AND_ASSIGN(Checkbox);
     64 };
     65 
     66 }  // namespace views
     67 
     68 #endif  // UI_VIEWS_CONTROLS_BUTTON_CHECKBOX_H_
     69