Index: chrome/browser/ui/panels/about_panel_bubble.cc |
=================================================================== |
--- chrome/browser/ui/panels/about_panel_bubble.cc (revision 87324) |
+++ chrome/browser/ui/panels/about_panel_bubble.cc (working copy) |
@@ -1,213 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/panels/about_panel_bubble.h" |
- |
-#include "base/i18n/time_formatting.h" |
-#include "base/logging.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/extensions/extension_prefs.h" |
-#include "chrome/browser/extensions/extension_service.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/web_applications/web_app.h" |
-#include "chrome/common/extensions/extension.h" |
-#include "grit/generated_resources.h" |
-#include "grit/locale_settings.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "views/controls/image_view.h" |
-#include "views/controls/label.h" |
-#include "views/controls/link.h" |
-#include "views/controls/textfield/textfield.h" |
-#include "views/window/window.h" |
- |
-namespace { |
- |
-// Extra padding to put around content over what the InfoBubble provides. |
-const int kBubblePadding = 4; |
- |
-// Horizontal spacing between the icon and the contents. |
-const int kIconHorizontalSpacing = 4; |
- |
-// Vertical spacing between two controls. |
-const int kControlVerticalSpacing = 10; |
- |
-// Horizontal spacing between the text and the left/right of a description. |
-const int kDescriptionHorizontalSpacing = 6; |
- |
-// Vertical spacing between the text and the top/bottom of a description. |
-const int kDescriptionVertialSpacing = 4; |
- |
-// Horizontal spacing between two links. |
-const int kLinksHorizontalSpacing = 20; |
- |
-// Text color of a description. |
-const SkColor kDescriptionTextColor = SK_ColorBLACK; |
- |
-// Background color of a description. |
-const SkColor kDescriptionBackgroundColor = 0xFFE8E8EE; |
- |
-} |
- |
-// AboutPanelBubbleView -------------------------------------------------------- |
- |
-AboutPanelBubble::AboutPanelBubbleView::AboutPanelBubbleView( |
- SkBitmap icon, Browser* browser, const Extension* extension) |
- : icon_(NULL), |
- title_(NULL), |
- install_date_(NULL), |
- description_(NULL), |
- uninstall_link_(NULL), |
- report_abuse_link_(NULL) { |
- const gfx::Font& font = |
- ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::BaseFont); |
- |
- icon_ = new views::ImageView(); |
- icon_->SetImage(icon); |
- AddChildView(icon_); |
- |
- title_ = new views::Label(UTF8ToWide(extension->name())); |
- title_->SetFont(font.DeriveFont(0, gfx::Font::BOLD)); |
- title_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
- AddChildView(title_); |
- |
- base::Time install_time = browser->GetProfile()->GetExtensionService()-> |
- extension_prefs()->GetInstallTime(extension->id()); |
- install_date_ = new views::Label(UTF16ToWide( |
- l10n_util::GetStringFUTF16( |
- IDS_ABOUT_PANEL_BUBBLE_EXTENSION_INSTALL_DATE, |
- base::TimeFormatFriendlyDate(install_time)))); |
- install_date_->SetMultiLine(true); |
- install_date_->SetFont(font); |
- install_date_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
- install_date_->SizeToFit(GetPreferredSize().width() - kBubblePadding * 2); |
- AddChildView(install_date_); |
- |
- description_ = new views::Textfield(views::Textfield::STYLE_MULTILINE); |
- description_->SetText(UTF8ToUTF16(extension->description())); |
- description_->SetHeightInLines(2); |
- description_->SetHorizontalMargins(kDescriptionHorizontalSpacing, |
- kDescriptionHorizontalSpacing); |
- description_->SetVerticalMargins(kDescriptionVertialSpacing, |
- kDescriptionVertialSpacing); |
- description_->SetFont(font); |
- description_->SetTextColor(kDescriptionTextColor); |
- description_->SetBackgroundColor(kDescriptionBackgroundColor); |
- description_->RemoveBorder(); |
- description_->SetReadOnly(true); |
- AddChildView(description_); |
- |
- uninstall_link_ = new views::Link(UTF16ToWide( |
- l10n_util::GetStringFUTF16(IDS_ABOUT_PANEL_BUBBLE_UNINSTALL_EXTENSION, |
- UTF8ToUTF16(extension->name())))); |
- AddChildView(uninstall_link_); |
- |
- report_abuse_link_ = new views::Link(UTF16ToWide( |
- l10n_util::GetStringUTF16(IDS_ABOUT_PANEL_BUBBLE_REPORT_ABUSE))); |
- AddChildView(report_abuse_link_); |
-} |
- |
-void AboutPanelBubble::AboutPanelBubbleView::Layout() { |
- gfx::Size icon_size = icon_->GetPreferredSize(); |
- icon_->SetBounds(kBubblePadding, |
- kBubblePadding, |
- icon_size.width(), |
- icon_size.height()); |
- |
- gfx::Size canvas = GetPreferredSize(); |
- int content_left_margin = |
- kBubblePadding + icon_size.width() + kIconHorizontalSpacing; |
- int content_width = canvas.width() - kBubblePadding - content_left_margin; |
- |
- gfx::Size pref_size = title_->GetPreferredSize(); |
- title_->SetBounds(content_left_margin, |
- kBubblePadding, |
- content_width, |
- pref_size.height()); |
- |
- int next_y = title_->bounds().bottom() + kControlVerticalSpacing; |
- |
- pref_size = install_date_->GetPreferredSize(); |
- install_date_->SetBounds(content_left_margin, |
- next_y, |
- content_width, |
- pref_size.height()); |
- |
- next_y = install_date_->bounds().bottom() + kControlVerticalSpacing; |
- |
- pref_size = description_->GetPreferredSize(); |
- description_->SetBounds( |
- content_left_margin, |
- next_y, |
- content_width, |
- pref_size.height() + kDescriptionVertialSpacing * 2); |
- |
- next_y = description_->bounds().bottom() + kControlVerticalSpacing; |
- |
- pref_size = uninstall_link_->GetPreferredSize(); |
- uninstall_link_->SetBounds(content_left_margin, |
- next_y, |
- pref_size.width(), |
- pref_size.height()); |
- |
- pref_size = report_abuse_link_->GetPreferredSize(); |
- report_abuse_link_->SetBounds( |
- content_left_margin + uninstall_link_->width() + kLinksHorizontalSpacing, |
- next_y, |
- pref_size.width(), |
- pref_size.height()); |
-} |
- |
-gfx::Size AboutPanelBubble::AboutPanelBubbleView::GetPreferredSize() { |
- return views::Window::GetLocalizedContentsSize( |
- IDS_ABOUTPANELBUBBLE_WIDTH_CHARS, |
- IDS_ABOUTPANELBUBBLE_HEIGHT_LINES); |
-} |
- |
-void AboutPanelBubble::AboutPanelBubbleView::LinkClicked(views::Link* source, |
- int event_flags) { |
- NOTIMPLEMENTED(); |
-} |
- |
-// AboutPanelBubble ------------------------------------------------------------ |
- |
-// static |
-AboutPanelBubble* AboutPanelBubble::Show( |
- views::Widget* parent, |
- const gfx::Rect& position_relative_to, |
- BubbleBorder::ArrowLocation arrow_location, |
- SkBitmap icon, |
- Browser* browser) { |
- // Find the extension. When we create a panel from an extension, the extension |
- // ID is passed as the app name to the Browser. |
- ExtensionService* extension_service = |
- browser->GetProfile()->GetExtensionService(); |
- const Extension* extension = extension_service->GetExtensionById( |
- web_app::GetExtensionIdFromApplicationName(browser->app_name()), false); |
- if (!extension) |
- return NULL; |
- |
- AboutPanelBubble* bubble = new AboutPanelBubble(); |
- AboutPanelBubbleView* view = new AboutPanelBubbleView( |
- icon, browser, extension); |
- bubble->InitBubble( |
- parent, position_relative_to, arrow_location, view, bubble); |
- return bubble; |
-} |
- |
-AboutPanelBubble::AboutPanelBubble() { |
-} |
- |
-bool AboutPanelBubble::CloseOnEscape() { |
- return true; |
-} |
- |
-bool AboutPanelBubble::FadeInOnShow() { |
- return false; |
-} |
- |
-std::wstring AboutPanelBubble::accessible_name() { |
- return L"AboutPanelBubble"; |
-} |