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 #import "chrome/browser/ui/cocoa/confirm_bubble_controller.h" 6 7 #include "base/mac/mac_util.h" 8 #include "base/strings/sys_string_conversions.h" 9 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 10 #import "chrome/browser/ui/cocoa/confirm_bubble_cocoa.h" 11 #import "chrome/browser/ui/confirm_bubble_model.h" 12 #include "ui/gfx/image/image.h" 13 #include "ui/gfx/point.h" 14 15 @implementation ConfirmBubbleController 16 17 - (id)initWithParent:(NSView*)parent 18 origin:(CGPoint)origin 19 model:(ConfirmBubbleModel*)model { 20 if ((self = [super initWithNibName:nil bundle:nil])) { 21 parent_ = parent; 22 origin_ = origin; 23 model_.reset(model); 24 } 25 return self; 26 } 27 28 - (void)loadView { 29 [self setView:[[[ConfirmBubbleCocoa alloc] initWithParent:parent_ 30 controller:self] autorelease]]; 31 } 32 33 - (void)windowWillClose:(NSNotification*)notification { 34 [self autorelease]; 35 } 36 37 // Accessors. This functions converts the C++ types retrieved from the 38 // ConfirmBubbleModel object to Objective-C types, and return them. 39 - (NSPoint)origin { 40 return NSPointFromCGPoint(origin_); 41 } 42 43 - (NSString*)title { 44 return base::SysUTF16ToNSString(model_->GetTitle()); 45 } 46 47 - (NSString*)messageText { 48 return base::SysUTF16ToNSString(model_->GetMessageText()); 49 } 50 51 - (NSString*)linkText { 52 return base::SysUTF16ToNSString(model_->GetLinkText()); 53 } 54 55 - (NSString*)okButtonText { 56 return base::SysUTF16ToNSString( 57 model_->GetButtonLabel(ConfirmBubbleModel::BUTTON_OK)); 58 } 59 60 - (NSString*)cancelButtonText { 61 return base::SysUTF16ToNSString( 62 model_->GetButtonLabel(ConfirmBubbleModel::BUTTON_CANCEL)); 63 } 64 65 - (BOOL)hasOkButton { 66 return (model_->GetButtons() & ConfirmBubbleModel::BUTTON_OK) ? YES : NO; 67 } 68 69 - (BOOL)hasCancelButton { 70 return (model_->GetButtons() & ConfirmBubbleModel::BUTTON_CANCEL) ? YES : NO; 71 } 72 73 - (NSImage*)icon { 74 gfx::Image* image = model_->GetIcon(); 75 return !image ? nil : image->ToNSImage(); 76 } 77 78 // Action handlers. 79 - (void)accept { 80 model_->Accept(); 81 } 82 83 - (void)cancel { 84 model_->Cancel(); 85 } 86 87 - (void)linkClicked { 88 model_->LinkClicked(); 89 } 90 91 @end 92