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.
5 #ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERIES_DIALOG_COCOA_H_
6 #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERIES_DIALOG_COCOA_H_
8 #import <Cocoa/Cocoa.h>
10 #include "base/gtest_prod_util.h"
11 #include "chrome/browser/media_galleries/media_galleries_dialog_controller.h"
12 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h"
13 #import "chrome/browser/ui/cocoa/extensions/media_gallery_list_entry_view.h"
15 @class ConstrainedWindowAlert;
16 @class MediaGalleriesCocoaController;
19 class MediaGalleriesDialogBrowserTest;
20 class MediaGalleriesDialogTest;
26 // This class displays an alert that can be used to manage lists of media
28 class MediaGalleriesDialogCocoa : public ConstrainedWindowMacDelegate,
29 public MediaGalleriesDialog,
30 public MediaGalleryListEntryController {
32 MediaGalleriesDialogCocoa(
33 MediaGalleriesDialogController* controller,
34 MediaGalleriesCocoaController* delegate);
35 virtual ~MediaGalleriesDialogCocoa();
37 // Called when the user clicks the accept button.
38 void OnAcceptClicked();
39 // Called when the user clicks the cancel button.
40 void OnCancelClicked();
41 // Called when the user clicks the auxiliary button.
42 void OnAuxiliaryButtonClicked();
44 // MediaGalleriesDialog implementation:
45 virtual void UpdateGalleries() OVERRIDE;
47 // ConstrainedWindowMacDelegate implementation.
48 virtual void OnConstrainedWindowClosed(
49 ConstrainedWindowMac* window) OVERRIDE;
51 // MediaGalleryListEntryController implementation.
52 virtual void OnCheckboxToggled(MediaGalleryPrefId pref_id,
53 bool checked) OVERRIDE;
54 virtual void OnFolderViewerClicked(MediaGalleryPrefId prefId) OVERRIDE;
55 virtual ui::MenuModel* GetContextMenu(MediaGalleryPrefId pref_id) OVERRIDE;
58 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogBrowserTest, Close);
59 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, InitializeCheckboxes);
60 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, ToggleCheckboxes);
61 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, UpdateAdds);
62 FRIEND_TEST_ALL_PREFIXES(MediaGalleriesDialogTest, ForgetDeletes);
64 // MediaGalleriesDialog implementation:
65 virtual void AcceptDialogForTesting() OVERRIDE;
67 void InitDialogControls();
68 CGFloat CreateCheckboxes(
70 const MediaGalleriesDialogController::Entries& entries);
71 CGFloat CreateCheckboxSeparator(CGFloat y_pos, NSString* header);
73 MediaGalleriesDialogController* controller_; // weak
74 scoped_ptr<ConstrainedWindowMac> window_;
76 // The alert that the dialog is being displayed as.
77 base::scoped_nsobject<ConstrainedWindowAlert> alert_;
79 // True if the user has pressed accept.
82 // Container view for checkboxes.
83 base::scoped_nsobject<NSView> checkbox_container_;
85 // Container view for the main dialog contents.
86 base::scoped_nsobject<NSBox> main_container_;
88 // An Objective-C class to route callbacks from Cocoa code.
89 base::scoped_nsobject<MediaGalleriesCocoaController> cocoa_controller_;
91 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogCocoa);
94 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERIES_DIALOG_COCOA_H_