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_COCOA_EXTENSIONS_MEDIA_GALLERY_LIST_ENTRY_VIEW_H_
6#define CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERY_LIST_ENTRY_VIEW_H_
7
8#import <Cocoa/Cocoa.h>
9
10#import "base/mac/scoped_nsobject.h"
11#include "chrome/browser/media_galleries/media_galleries_preferences.h"
12#import "ui/base/models/menu_model.h"
13
14@class MediaGalleryButton;
15
16class MediaGalleryListEntryController {
17 public:
18  virtual void OnCheckboxToggled(MediaGalleryPrefId pref_id, bool checked) {}
19  virtual void OnFolderViewerClicked(MediaGalleryPrefId pref_id) {}
20  virtual ui::MenuModel* GetContextMenu(MediaGalleryPrefId pref_id);
21
22 protected:
23  virtual ~MediaGalleryListEntryController() {}
24};
25
26@interface MediaGalleryListEntry : NSView {
27 @private
28  MediaGalleryListEntryController* controller_;  // |controller_| owns |this|.
29  MediaGalleryPrefId prefId_;
30
31  base::scoped_nsobject<MediaGalleryButton> checkbox_;
32  base::scoped_nsobject<MediaGalleryButton> folderViewer_;
33  base::scoped_nsobject<NSTextField> details_;
34}
35
36// Does size to fit if frameRect is empty.
37- (id)initWithFrame:(NSRect)frameRect
38         controller:(MediaGalleryListEntryController*)controller_
39           prefInfo:(const MediaGalleryPrefInfo&)prefInfo
40   showFolderViewer:(bool)showFolderViewer;
41
42- (void)setState:(bool)selected;
43
44@end
45
46#endif  // CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERY_LIST_ENTRY_VIEW_H_
47