1// Copyright 2014 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_EXTENSIONS_MEDIA_GALLERY_CHECKBOX_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_MEDIA_GALLERY_CHECKBOX_VIEW_H_
7
8#include "base/macros.h"
9#include "base/strings/string16.h"
10#include "ui/gfx/size.h"
11#include "ui/views/view.h"
12
13struct MediaGalleryPrefInfo;
14
15namespace views {
16class ButtonListener;
17class Checkbox;
18class ContextMenuController;
19class ImageButton;
20class Label;
21}  // namespace views
22
23// A view composed of a checkbox, optional folder icon button, and secondary
24// text that will elide to its parent's width; used by MediaGalleriesDialogViews
25// and MediaGalleriesScanResultDialogViews.
26class MediaGalleryCheckboxView : public views::View {
27 public:
28  MediaGalleryCheckboxView(const MediaGalleryPrefInfo& pref_info,
29                           bool show_button,
30                           int trailing_vertical_space,
31                           views::ButtonListener* button_listener,
32                           views::ContextMenuController* menu_controller);
33  virtual ~MediaGalleryCheckboxView();
34
35  // Overrides from views::View.
36  virtual void Layout() OVERRIDE;
37
38  views::Checkbox* checkbox() { return checkbox_; }
39  views::ImageButton* folder_viewer_button() { return folder_viewer_button_; }
40  views::Label* secondary_text() { return secondary_text_; }
41
42 private:
43  // Owned by the parent class (views::View).
44  views::Checkbox* checkbox_;
45  views::ImageButton* folder_viewer_button_;
46  views::Label* secondary_text_;
47
48  DISALLOW_COPY_AND_ASSIGN(MediaGalleryCheckboxView);
49};
50
51#endif  // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_MEDIA_GALLERY_CHECKBOX_VIEW_H_
52