| Index: chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc
|
| diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc
|
| index 5c5d6fe75f988b12c9fd30adb180db88b714bda2..4cfdc6214a8be454fa3c8b5f4b9bd4555f0ae253 100644
|
| --- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc
|
| +++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc
|
| @@ -18,6 +18,7 @@
|
| #include "extensions/browser/extension_prefs.h"
|
| #include "extensions/browser/extension_system.h"
|
| #include "extensions/common/extension.h"
|
| +#include "extensions/common/manifest.h"
|
| #include "grit/generated_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/models/combobox_model.h"
|
| @@ -28,6 +29,12 @@
|
| #include "ui/views/view.h"
|
| #include "ui/views/widget/widget.h"
|
|
|
| +namespace {
|
| +
|
| +// The spacing between the key and the value labels in the Details section.
|
| +const int kSpacingBetweenKeyAndStartOfValue = 3;
|
| +}
|
| +
|
| // A model for a combobox selecting the launch options for a hosted app.
|
| // Displays different options depending on the host OS.
|
| class LaunchOptionsComboboxModel : public ui::ComboboxModel {
|
| @@ -127,9 +134,13 @@ AppInfoSummaryPanel::AppInfoSummaryPanel(Profile* profile,
|
| : AppInfoPanel(profile, app),
|
| description_heading_(NULL),
|
| description_label_(NULL),
|
| + details_heading_(NULL),
|
| + version_title_(NULL),
|
| + version_value_(NULL),
|
| launch_options_combobox_(NULL) {
|
| // Create UI elements.
|
| CreateDescriptionControl();
|
| + CreateDetailsControl();
|
| CreateLaunchOptionControl();
|
|
|
| // Layout elements.
|
| @@ -140,6 +151,7 @@ AppInfoSummaryPanel::AppInfoSummaryPanel(Profile* profile,
|
| views::kUnrelatedControlVerticalSpacing));
|
|
|
| LayoutDescriptionControl();
|
| + LayoutDetailsControl();
|
|
|
| if (launch_options_combobox_)
|
| AddChildView(launch_options_combobox_);
|
| @@ -168,6 +180,21 @@ void AppInfoSummaryPanel::CreateDescriptionControl() {
|
| }
|
| }
|
|
|
| +void AppInfoSummaryPanel::CreateDetailsControl() {
|
| + if (HasVersion()) {
|
| + details_heading_ = CreateHeading(
|
| + l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_DETAILS_TITLE));
|
| +
|
| + version_title_ = new views::Label(
|
| + l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_VERSION_LABEL));
|
| + version_title_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| +
|
| + version_value_ =
|
| + new views::Label(base::ASCIIToUTF16(app_->VersionString()));
|
| + version_value_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + }
|
| +}
|
| +
|
| void AppInfoSummaryPanel::CreateLaunchOptionControl() {
|
| if (CanSetLaunchType()) {
|
| launch_options_combobox_model_.reset(new LaunchOptionsComboboxModel());
|
| @@ -190,6 +217,26 @@ void AppInfoSummaryPanel::LayoutDescriptionControl() {
|
| }
|
| }
|
|
|
| +void AppInfoSummaryPanel::LayoutDetailsControl() {
|
| + if (details_heading_) {
|
| + views::View* details_stack =
|
| + CreateVerticalStack(views::kRelatedControlSmallVerticalSpacing);
|
| +
|
| + if (version_title_ && version_value_) {
|
| + views::View* horizontal_stack =
|
| + CreateHorizontalStack(kSpacingBetweenKeyAndStartOfValue);
|
| + horizontal_stack->AddChildView(version_title_);
|
| + horizontal_stack->AddChildView(version_value_);
|
| + details_stack->AddChildView(horizontal_stack);
|
| + }
|
| +
|
| + views::View* vertical_stack = CreateVerticalStack();
|
| + vertical_stack->AddChildView(details_heading_);
|
| + vertical_stack->AddChildView(details_stack);
|
| + AddChildView(vertical_stack);
|
| + }
|
| +}
|
| +
|
| void AppInfoSummaryPanel::OnPerformAction(views::Combobox* combobox) {
|
| if (combobox == launch_options_combobox_) {
|
| SetLaunchType(launch_options_combobox_model_->GetLaunchTypeAtIndex(
|
| @@ -199,6 +246,12 @@ void AppInfoSummaryPanel::OnPerformAction(views::Combobox* combobox) {
|
| }
|
| }
|
|
|
| +bool AppInfoSummaryPanel::HasVersion() const {
|
| + // The version number doesn't make sense for bookmark or component apps.
|
| + return !app_->from_bookmark() &&
|
| + app_->location() != extensions::Manifest::COMPONENT;
|
| +}
|
| +
|
| extensions::LaunchType AppInfoSummaryPanel::GetLaunchType() const {
|
| return extensions::GetLaunchType(extensions::ExtensionPrefs::Get(profile_),
|
| app_);
|
|
|