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 CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERIES_DIALOG_COCOA_H_ 6 #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERIES_DIALOG_COCOA_H_ 7 8 #import <Cocoa/Cocoa.h> 9 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" 14 15 @class ConstrainedWindowAlert; 16 @class MediaGalleriesCocoaController; 17 @class NSString; 18 19 class MediaGalleriesDialogBrowserTest; 20 class MediaGalleriesDialogTest; 21 22 namespace ui { 23 class MenuModel; 24 } 25 26 // This class displays an alert that can be used to manage lists of media 27 // galleries. 28 class MediaGalleriesDialogCocoa : public ConstrainedWindowMacDelegate, 29 public MediaGalleriesDialog, 30 public MediaGalleryListEntryController { 31 public: 32 MediaGalleriesDialogCocoa( 33 MediaGalleriesDialogController* controller, 34 MediaGalleriesCocoaController* delegate); 35 virtual ~MediaGalleriesDialogCocoa(); 36 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(); 43 44 // MediaGalleriesDialog implementation: 45 virtual void UpdateGalleries() OVERRIDE; 46 47 // ConstrainedWindowMacDelegate implementation. 48 virtual void OnConstrainedWindowClosed( 49 ConstrainedWindowMac* window) OVERRIDE; 50 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; 56 57 private: 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); 63 64 // MediaGalleriesDialog implementation: 65 virtual void AcceptDialogForTesting() OVERRIDE; 66 67 void InitDialogControls(); 68 CGFloat CreateCheckboxes( 69 CGFloat y_pos, 70 const MediaGalleriesDialogController::Entries& entries); 71 CGFloat CreateCheckboxSeparator(CGFloat y_pos, NSString* header); 72 73 MediaGalleriesDialogController* controller_; // weak 74 scoped_ptr<ConstrainedWindowMac> window_; 75 76 // The alert that the dialog is being displayed as. 77 base::scoped_nsobject<ConstrainedWindowAlert> alert_; 78 79 // True if the user has pressed accept. 80 bool accepted_; 81 82 // Container view for checkboxes. 83 base::scoped_nsobject<NSView> checkbox_container_; 84 85 // Container view for the main dialog contents. 86 base::scoped_nsobject<NSBox> main_container_; 87 88 // An Objective-C class to route callbacks from Cocoa code. 89 base::scoped_nsobject<MediaGalleriesCocoaController> cocoa_controller_; 90 91 DISALLOW_COPY_AND_ASSIGN(MediaGalleriesDialogCocoa); 92 }; 93 94 #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_MEDIA_GALLERIES_DIALOG_COCOA_H_ 95