Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2011 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 <Cocoa/Cocoa.h>
      6 
      7 #include <string>
      8 
      9 #include "base/sys_string_conversions.h"
     10 #include "base/utf_string_conversions.h"
     11 #include "chrome/browser/extensions/extension_uninstall_dialog.h"
     12 #include "chrome/browser/profiles/profile.h"
     13 #include "chrome/common/extensions/extension.h"
     14 #include "grit/chromium_strings.h"
     15 #include "grit/generated_resources.h"
     16 #include "skia/ext/skia_utils_mac.h"
     17 #include "ui/base/l10n/l10n_util_mac.h"
     18 #include "ui/base/resource/resource_bundle.h"
     19 
     20 // static
     21 void ExtensionUninstallDialog::Show(
     22     Profile* profile,
     23     ExtensionUninstallDialog::Delegate* delegate,
     24     const Extension* extension,
     25     SkBitmap* icon) {
     26   NSAlert* alert = [[[NSAlert alloc] init] autorelease];
     27 
     28   NSButton* continueButton = [alert addButtonWithTitle:l10n_util::GetNSString(
     29       IDS_EXTENSION_PROMPT_UNINSTALL_BUTTON)];
     30   // Clear the key equivalent (currently 'Return') because cancel is the default
     31   // button.
     32   [continueButton setKeyEquivalent:@""];
     33 
     34   NSButton* cancelButton = [alert addButtonWithTitle:l10n_util::GetNSString(
     35       IDS_CANCEL)];
     36   [cancelButton setKeyEquivalent:@"\r"];
     37 
     38   [alert setMessageText:l10n_util::GetNSStringF(
     39        IDS_EXTENSION_UNINSTALL_PROMPT_HEADING,
     40        UTF8ToUTF16(extension->name()))];
     41   [alert setAlertStyle:NSWarningAlertStyle];
     42   [alert setIcon:gfx::SkBitmapToNSImage(*icon)];
     43 
     44   if ([alert runModal] == NSAlertFirstButtonReturn)
     45     delegate->ExtensionDialogAccepted();
     46   else
     47     delegate->ExtensionDialogCanceled();
     48 }
     49