Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.mm

Issue 46503002: [MediaGalleries] Context menu for Mac media galleries dialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h" 5 #include "chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h"
6 6
7 #include "base/mac/scoped_nsobject.h"
7 #include "base/strings/sys_string_conversions.h" 8 #include "base/strings/sys_string_conversions.h"
8 #include "chrome/browser/ui/chrome_style.h" 9 #include "chrome/browser/ui/chrome_style.h"
9 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_alert.h" 10 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_alert.h"
10 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" 11 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h"
11 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_control_u tils.h" 12 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_control_u tils.h"
12 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" 13 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h"
13 #import "chrome/browser/ui/cocoa/key_equivalent_constants.h" 14 #import "chrome/browser/ui/cocoa/key_equivalent_constants.h"
14 #include "content/public/browser/web_contents.h" 15 #include "content/public/browser/web_contents.h"
15 #include "grit/generated_resources.h" 16 #include "grit/generated_resources.h"
16 #import "ui/base/cocoa/flipped_view.h" 17 #import "ui/base/cocoa/flipped_view.h"
18 #import "ui/base/cocoa/menu_controller.h"
19 #import "ui/base/models/menu_model.h"
17 #include "ui/base/l10n/l10n_util.h" 20 #include "ui/base/l10n/l10n_util.h"
18 #include "ui/base/resource/resource_bundle.h" 21 #include "ui/base/resource/resource_bundle.h"
19 22
23 // Controller for UI events on items in the media galleries dialog.
20 @interface MediaGalleriesCocoaController : NSObject { 24 @interface MediaGalleriesCocoaController : NSObject {
21 @private 25 @private
22 MediaGalleriesDialogCocoa* dialog_; 26 MediaGalleriesDialogCocoa* dialog_;
23 } 27 }
24 28
25 @property(nonatomic, assign) MediaGalleriesDialogCocoa* dialog; 29 @property(nonatomic, assign) MediaGalleriesDialogCocoa* dialog;
26 30
27 @end 31 @end
28 32
29 @implementation MediaGalleriesCocoaController 33 @implementation MediaGalleriesCocoaController
(...skipping 13 matching lines...) Expand all
43 dialog_->OnAddFolderClicked(); 47 dialog_->OnAddFolderClicked();
44 } 48 }
45 49
46 - (void)onCheckboxToggled:(id)sender { 50 - (void)onCheckboxToggled:(id)sender {
47 DCHECK(dialog_); 51 DCHECK(dialog_);
48 dialog_->OnCheckboxToggled(sender); 52 dialog_->OnCheckboxToggled(sender);
49 } 53 }
50 54
51 @end 55 @end
52 56
57 @interface MediaGalleriesCheckbox : NSButton {
58 @private
59 MediaGalleriesDialogCocoa* dialog_;
60 MediaGalleryPrefId prefid_;
61 base::scoped_nsobject<MenuController> menu_controller_;
62 }
63
64 @property(nonatomic, assign) MediaGalleriesDialogCocoa* dialog;
65 @property(nonatomic, assign) MediaGalleryPrefId prefid;
Avi (use Gerrit) 2013/11/05 19:17:33 prefid? I'd prefer prefID, or at least prefId. An
Greg Billock 2013/11/06 18:28:25 That sounds good. Will do.
66
67 - (NSMenu*)menuForEvent:(NSEvent*)theEvent;
68
69 @end
70
71 @implementation MediaGalleriesCheckbox
72
73 @synthesize dialog = dialog_;
74 @synthesize prefid = prefid_;
75
76 - (id)initWithFrame:(NSRect)frameRect {
77 if ((self = [super initWithFrame:frameRect])) {
78 }
79 return self;
80 }
81
82 - (NSMenu*)menuForEvent:(NSEvent*)theEvent {
83 menu_controller_.reset(
84 [[MenuController alloc] initWithModel:dialog_->GetContextMenuModel(prefid_)
85 useWithPopUpButtonCell:NO]);
86 return [menu_controller_ menu];
87 }
88
89 @end
90
53 namespace { 91 namespace {
54 92
55 const CGFloat kCheckboxMargin = 10; 93 const CGFloat kCheckboxMargin = 10;
56 const CGFloat kCheckboxMaxWidth = 440; 94 const CGFloat kCheckboxMaxWidth = 440;
57 const CGFloat kScrollAreaHeight = 220; 95 const CGFloat kScrollAreaHeight = 220;
58 96
59 NSString* GetUniqueIDForGallery(const MediaGalleryPrefInfo& gallery) { 97 NSString* GetUniqueIDForGallery(const MediaGalleryPrefInfo& gallery) {
60 return base::SysUTF8ToNSString(gallery.device_id + gallery.path.value()); 98 return base::SysUTF8ToNSString(gallery.device_id + gallery.path.value());
61 } 99 }
62 100
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 break; 319 break;
282 } 320 }
283 } 321 }
284 322
285 } 323 }
286 324
287 void MediaGalleriesDialogCocoa::UpdateGalleryCheckbox( 325 void MediaGalleriesDialogCocoa::UpdateGalleryCheckbox(
288 const MediaGalleryPrefInfo& gallery, 326 const MediaGalleryPrefInfo& gallery,
289 bool permitted, 327 bool permitted,
290 CGFloat y_pos) { 328 CGFloat y_pos) {
291 base::scoped_nsobject<NSButton> checkbox( 329 base::scoped_nsobject<MediaGalleriesCheckbox> checkbox(
292 [[NSButton alloc] initWithFrame:NSZeroRect]); 330 [[MediaGalleriesCheckbox alloc] initWithFrame:NSZeroRect]);
331 [checkbox setDialog:this];
332 [checkbox setPrefid:gallery.pref_id];
293 NSString* unique_id = GetUniqueIDForGallery(gallery); 333 NSString* unique_id = GetUniqueIDForGallery(gallery);
294 [[checkbox cell] setRepresentedObject:unique_id]; 334 [[checkbox cell] setRepresentedObject:unique_id];
295 [[checkbox cell] setLineBreakMode:NSLineBreakByTruncatingMiddle]; 335 [[checkbox cell] setLineBreakMode:NSLineBreakByTruncatingMiddle];
296 [checkbox setButtonType:NSSwitchButton]; 336 [checkbox setButtonType:NSSwitchButton];
297 [checkbox setTarget:cocoa_controller_]; 337 [checkbox setTarget:cocoa_controller_];
298 [checkbox setAction:@selector(onCheckboxToggled:)]; 338 [checkbox setAction:@selector(onCheckboxToggled:)];
299 [checkboxes_ addObject:checkbox]; 339 [checkboxes_ addObject:checkbox];
300 340
301 // TODO(gbillock): Would be nice to add middle text elide behavior here. 341 // TODO(gbillock): Would be nice to add middle text elide behavior here.
302 [checkbox setTitle:base::SysUTF16ToNSString( 342 [checkbox setTitle:base::SysUTF16ToNSString(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 380
341 void MediaGalleriesDialogCocoa::UpdateGalleries() { 381 void MediaGalleriesDialogCocoa::UpdateGalleries() {
342 InitDialogControls(); 382 InitDialogControls();
343 } 383 }
344 384
345 void MediaGalleriesDialogCocoa::OnConstrainedWindowClosed( 385 void MediaGalleriesDialogCocoa::OnConstrainedWindowClosed(
346 ConstrainedWindowMac* window) { 386 ConstrainedWindowMac* window) {
347 controller_->DialogFinished(accepted_); 387 controller_->DialogFinished(accepted_);
348 } 388 }
349 389
390 ui::MenuModel* MediaGalleriesDialogCocoa::GetContextMenuModel(
391 MediaGalleryPrefId prefid) {
392 return controller_->GetContextMenuModel(prefid);
393 }
394
350 // static 395 // static
351 MediaGalleriesDialog* MediaGalleriesDialog::Create( 396 MediaGalleriesDialog* MediaGalleriesDialog::Create(
352 MediaGalleriesDialogController* controller) { 397 MediaGalleriesDialogController* controller) {
353 base::scoped_nsobject<MediaGalleriesCocoaController> cocoa_controller( 398 base::scoped_nsobject<MediaGalleriesCocoaController> cocoa_controller(
354 [[MediaGalleriesCocoaController alloc] init]); 399 [[MediaGalleriesCocoaController alloc] init]);
355 return new MediaGalleriesDialogCocoa(controller, cocoa_controller); 400 return new MediaGalleriesDialogCocoa(controller, cocoa_controller);
356 } 401 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/extensions/media_galleries_dialog_cocoa.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698