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 [[BrowserWindowController 30 browserWindowControllerForView:parent_] onOverlappedViewShown]; 31 [self setView:[[[ConfirmBubbleCocoa alloc] initWithParent:parent_ 32 controller:self] autorelease]]; 33} 34 35- (void)windowWillClose:(NSNotification*)notification { 36 [[BrowserWindowController 37 browserWindowControllerForView:parent_] onOverlappedViewHidden]; 38 [self autorelease]; 39} 40 41// Accessors. This functions converts the C++ types retrieved from the 42// ConfirmBubbleModel object to Objective-C types, and return them. 43- (NSPoint)origin { 44 return NSPointFromCGPoint(origin_); 45} 46 47- (NSString*)title { 48 return base::SysUTF16ToNSString(model_->GetTitle()); 49} 50 51- (NSString*)messageText { 52 return base::SysUTF16ToNSString(model_->GetMessageText()); 53} 54 55- (NSString*)linkText { 56 return base::SysUTF16ToNSString(model_->GetLinkText()); 57} 58 59- (NSString*)okButtonText { 60 return base::SysUTF16ToNSString( 61 model_->GetButtonLabel(ConfirmBubbleModel::BUTTON_OK)); 62} 63 64- (NSString*)cancelButtonText { 65 return base::SysUTF16ToNSString( 66 model_->GetButtonLabel(ConfirmBubbleModel::BUTTON_CANCEL)); 67} 68 69- (BOOL)hasOkButton { 70 return (model_->GetButtons() & ConfirmBubbleModel::BUTTON_OK) ? YES : NO; 71} 72 73- (BOOL)hasCancelButton { 74 return (model_->GetButtons() & ConfirmBubbleModel::BUTTON_CANCEL) ? YES : NO; 75} 76 77- (NSImage*)icon { 78 gfx::Image* image = model_->GetIcon(); 79 return !image ? nil : image->ToNSImage(); 80} 81 82// Action handlers. 83- (void)accept { 84 model_->Accept(); 85} 86 87- (void)cancel { 88 model_->Cancel(); 89} 90 91- (void)linkClicked { 92 model_->LinkClicked(); 93} 94 95@end 96