| Index: chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
|
| diff --git a/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc b/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
|
| index d59679dfe3064699c278530963200a8163c45d15..3f94b717532e01eec250ebe51245f556f37ae237 100644
|
| --- a/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
|
| +++ b/chrome/browser/ui/views/extensions/bookmark_app_bubble_view.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/strings/string16.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "chrome/browser/extensions/app_icon_loader_impl.h"
|
| #include "chrome/browser/extensions/crx_installer.h"
|
| #include "chrome/browser/extensions/launch_util.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -17,6 +18,7 @@
|
| #include "ui/events/keycodes/keyboard_codes.h"
|
| #include "ui/views/controls/button/checkbox.h"
|
| #include "ui/views/controls/button/label_button.h"
|
| +#include "ui/views/controls/image_view.h"
|
| #include "ui/views/controls/label.h"
|
| #include "ui/views/controls/textfield/textfield.h"
|
| #include "ui/views/layout/grid_layout.h"
|
| @@ -32,6 +34,8 @@ namespace {
|
| const int kMinBubbleWidth = 300;
|
| // Minimum width of the the textfield.
|
| const int kMinTextfieldWidth = 200;
|
| +// Size of the icon.
|
| +const int kIconSize = extension_misc::EXTENSION_ICON_MEDIUM;
|
|
|
| } // namespace
|
|
|
| @@ -69,7 +73,10 @@ BookmarkAppBubbleView::BookmarkAppBubbleView(
|
| cancel_button_(NULL),
|
| open_as_tab_checkbox_(NULL),
|
| title_tf_(NULL),
|
| - remove_app_(true) {
|
| + remove_app_(true),
|
| + app_icon_loader_(new extensions::AppIconLoaderImpl(profile,
|
| + kIconSize,
|
| + this)) {
|
| const SkColor background_color = GetNativeTheme()->GetSystemColor(
|
| ui::NativeTheme::kColorId_DialogBackground);
|
| set_arrow(views::BubbleBorder::TOP_CENTER);
|
| @@ -111,11 +118,18 @@ void BookmarkAppBubbleView::Init() {
|
| GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0);
|
| cs->AddPaddingColumn(0, views::kButtonHEdgeMarginNew);
|
|
|
| - // The column layout used for the text box.
|
| + // The column layout used for the icon and text box.
|
| cs = layout->AddColumnSet(TITLE_TEXT_COLUMN_SET_ID);
|
| cs->AddPaddingColumn(0, views::kButtonHEdgeMarginNew);
|
| + cs->AddColumn(GridLayout::LEADING,
|
| + GridLayout::CENTER,
|
| + 0,
|
| + GridLayout::USE_PREF,
|
| + 0,
|
| + 0);
|
| + cs->AddPaddingColumn(0, views::kButtonHEdgeMarginNew);
|
| cs->AddColumn(GridLayout::FILL,
|
| - GridLayout::FILL,
|
| + GridLayout::CENTER,
|
| 1,
|
| GridLayout::USE_PREF,
|
| 0,
|
| @@ -124,29 +138,37 @@ void BookmarkAppBubbleView::Init() {
|
|
|
| // The column layout used for the row with buttons.
|
| cs = layout->AddColumnSet(CONTENT_COLUMN_SET_ID);
|
| - cs->AddPaddingColumn(1, views::kButtonHEdgeMarginNew);
|
| -
|
| + cs->AddPaddingColumn(0, views::kButtonHEdgeMarginNew);
|
| cs->AddColumn(
|
| - GridLayout::LEADING, GridLayout::TRAILING, 0, GridLayout::USE_PREF, 0, 0);
|
| + GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0);
|
| + cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing);
|
| + cs->AddColumn(
|
| + GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0);
|
| cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
|
| cs->AddColumn(
|
| - GridLayout::LEADING, GridLayout::TRAILING, 0, GridLayout::USE_PREF, 0, 0);
|
| + GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0);
|
| cs->AddPaddingColumn(0, views::kButtonHEdgeMarginNew);
|
|
|
| layout->StartRow(0, TITLE_COLUMN_SET_ID);
|
| layout->AddView(title_label);
|
| layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
|
|
| - layout->StartRow(0, TITLE_TEXT_COLUMN_SET_ID);
|
| - title_tf_ = new views::Textfield();
|
| const extensions::Extension* extension =
|
| profile_->GetExtensionService()->GetInstalledExtension(extension_id_);
|
| +
|
| + layout->StartRow(0, TITLE_TEXT_COLUMN_SET_ID);
|
| + icon_image_view_ = new views::ImageView();
|
| + icon_image_view_->SetImageSize(gfx::Size(kIconSize, kIconSize));
|
| + layout->AddView(icon_image_view_);
|
| + app_icon_loader_->FetchImage(extension_id_);
|
| +
|
| + title_tf_ = new views::Textfield();
|
| title_tf_->SetText(extension ? base::UTF8ToUTF16(extension->name())
|
| : web_app_info_.title);
|
| layout->AddView(title_tf_);
|
| layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
|
|
| - layout->StartRow(0, TITLE_COLUMN_SET_ID);
|
| + layout->StartRow(0, CONTENT_COLUMN_SET_ID);
|
| open_as_tab_checkbox_ = new views::Checkbox(
|
| l10n_util::GetStringUTF16(IDS_BOOKMARK_APP_BUBBLE_OPEN_AS_TAB));
|
| open_as_tab_checkbox_->SetChecked(
|
| @@ -154,9 +176,6 @@ void BookmarkAppBubbleView::Init() {
|
| extensions::pref_names::kBookmarkAppCreationLaunchType) ==
|
| extensions::LAUNCH_TYPE_REGULAR);
|
| layout->AddView(open_as_tab_checkbox_);
|
| - layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
| -
|
| - layout->StartRow(0, CONTENT_COLUMN_SET_ID);
|
| layout->AddView(add_button_);
|
| layout->AddView(cancel_button_);
|
| layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| @@ -203,6 +222,12 @@ void BookmarkAppBubbleView::ButtonPressed(views::Button* sender,
|
| HandleButtonPressed(sender);
|
| }
|
|
|
| +void BookmarkAppBubbleView::SetAppImage(const std::string& id,
|
| + const gfx::ImageSkia& image) {
|
| + DCHECK_EQ(extension_id_, id);
|
| + icon_image_view_->SetImage(image);
|
| +}
|
| +
|
| void BookmarkAppBubbleView::HandleButtonPressed(views::Button* sender) {
|
| // Unset |remove_app_| so we don't delete the bookmark after the window
|
| // closes.
|
|
|