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