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

Side by Side Diff: chrome/browser/cocoa/download_request_dialog_delegate_mac.mm

Issue 275011: Make the multiple download request dialog an infobar.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months 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
OLDNEW
(Empty)
1 // Copyright (c) 2009 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 #include "chrome/browser/cocoa/download_request_dialog_delegate_mac.h"
6
7 #import <Cocoa/Cocoa.h>
8
9 #include "app/l10n_util_mac.h"
10 #include "app/message_box_flags.h"
11 #include "base/sys_string_conversions.h"
12 #include "chrome/browser/tab_contents/constrained_window.h"
13 #include "chrome/browser/tab_contents/tab_contents.h"
14 #include "grit/generated_resources.h"
15
16 @interface SheetCallback : NSObject {
17 DownloadRequestDialogDelegateMac* target_; // weak
18 }
19 - (id)initWithTarget:(DownloadRequestDialogDelegateMac*)target;
20 - (void) alertDidEnd:(NSAlert *)alert
21 returnCode:(int)returnCode
22 contextInfo:(void *)contextInfo;
23 @end
24
25 @implementation SheetCallback
26 - (id)initWithTarget:(DownloadRequestDialogDelegateMac*)target {
27 if ((self = [super init]) != nil) {
28 target_ = target;
29 }
30 return self;
31 }
32 - (void)alertDidEnd:(NSAlert *)alert
33 returnCode:(int)returnCode
34 contextInfo:(void *)contextInfo {
35 target_->SheetDidEnd(returnCode);
36 }
37 @end
38
39
40 // static
41 DownloadRequestDialogDelegate* DownloadRequestDialogDelegate::Create(
42 TabContents* tab,
43 DownloadRequestManager::TabDownloadState* host) {
44 return new DownloadRequestDialogDelegateMac(tab, host);
45 }
46
47 DownloadRequestDialogDelegateMac::DownloadRequestDialogDelegateMac(
48 TabContents* tab,
49 DownloadRequestManager::TabDownloadState* host)
50 : DownloadRequestDialogDelegate(host),
51 ConstrainedWindowMacDelegateSystemSheet(
52 [[[SheetCallback alloc] initWithTarget:this] autorelease],
53 @selector(alertDidEnd:returnCode:contextInfo:)),
54 responded_(false) {
55
56 // Set up alert.
57 NSAlert* alert = [[[NSAlert alloc] init] autorelease];
58 [alert addButtonWithTitle:
59 l10n_util::GetNSStringWithFixup(IDS_MULTI_DOWNLOAD_WARNING_ALLOW)];
60 NSButton* denyButton = [alert addButtonWithTitle:
61 l10n_util::GetNSStringWithFixup(IDS_MULTI_DOWNLOAD_WARNING_DENY)];
62 [alert setMessageText:
63 l10n_util::GetNSStringWithFixup(IDS_MULTI_DOWNLOAD_WARNING)];
64 [alert setAlertStyle:NSInformationalAlertStyle];
65
66 // Cocoa automatically gives ESC as a key equivalent to buttons with the text
67 // "Cancel". Since we use a different text, we have to set this ourselves.
68 NSString* escapeKey = @"\e";
69 [denyButton setKeyEquivalent:escapeKey];
70
71 set_sheet(alert);
72
73 // Display alert in a per-tab sheet.
74 window_ = tab->CreateConstrainedDialog(this);
75 }
76
77 void DownloadRequestDialogDelegateMac::CloseWindow() {
78 window_->CloseConstrainedWindow();
79 }
80
81 void DownloadRequestDialogDelegateMac::DeleteDelegate() {
82 if (is_sheet_open()) {
83 // Close sheet if it's still open.
84 [NSApp endSheet:[(NSAlert*)sheet() window]]; // calls SheetDidEnd().
85 DCHECK(responded_);
86 }
87 if (!responded_) {
88 // Happens if the sheet was never visible.
89 responded_ = true;
90 DoCancel();
91 }
92 DCHECK(!host_);
93 delete this;
94 }
95
96 void DownloadRequestDialogDelegateMac::SheetDidEnd(int returnCode) {
97 DCHECK(!responded_);
98 if (returnCode == NSAlertFirstButtonReturn) {
99 DoAccept();
100 } else {
101 DoCancel();
102 }
103 responded_ = true;
104 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698