Home | History | Annotate | Download | only in cocoa
      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