Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc

Issue 423363002: Add 'App Size' to App Info Dialog (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nit Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.h" 5 #include "chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/callback_forward.h" 9 #include "base/callback_forward.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/file_util.h"
11 #include "base/i18n/time_formatting.h" 12 #include "base/i18n/time_formatting.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
13 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/task_runner_util.h"
14 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/launch_util.h" 17 #include "chrome/browser/extensions/launch_util.h"
16 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/common/chrome_switches.h" 19 #include "chrome/common/chrome_switches.h"
18 #include "chrome/common/extensions/extension_constants.h" 20 #include "chrome/common/extensions/extension_constants.h"
21 #include "content/public/browser/browser_thread.h"
19 #include "extensions/browser/extension_prefs.h" 22 #include "extensions/browser/extension_prefs.h"
20 #include "extensions/browser/extension_system.h" 23 #include "extensions/browser/extension_system.h"
21 #include "extensions/common/extension.h" 24 #include "extensions/common/extension.h"
22 #include "extensions/common/manifest.h" 25 #include "extensions/common/manifest.h"
23 #include "grit/generated_resources.h" 26 #include "grit/generated_resources.h"
24 #include "ui/base/l10n/l10n_util.h" 27 #include "ui/base/l10n/l10n_util.h"
25 #include "ui/base/models/combobox_model.h" 28 #include "ui/base/models/combobox_model.h"
29 #include "ui/base/text/bytes_formatting.h"
26 #include "ui/views/controls/combobox/combobox.h" 30 #include "ui/views/controls/combobox/combobox.h"
27 #include "ui/views/controls/label.h" 31 #include "ui/views/controls/label.h"
28 #include "ui/views/layout/box_layout.h" 32 #include "ui/views/layout/box_layout.h"
29 #include "ui/views/layout/layout_constants.h" 33 #include "ui/views/layout/layout_constants.h"
30 #include "ui/views/view.h" 34 #include "ui/views/view.h"
31 #include "ui/views/widget/widget.h" 35 #include "ui/views/widget/widget.h"
32 36
33 // A model for a combobox selecting the launch options for a hosted app. 37 // A model for a combobox selecting the launch options for a hosted app.
34 // Displays different options depending on the host OS. 38 // Displays different options depending on the host OS.
35 class LaunchOptionsComboboxModel : public ui::ComboboxModel { 39 class LaunchOptionsComboboxModel : public ui::ComboboxModel {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 base::string16 LaunchOptionsComboboxModel::GetItemAt(int index) { 127 base::string16 LaunchOptionsComboboxModel::GetItemAt(int index) {
124 return launch_type_messages_[index]; 128 return launch_type_messages_[index];
125 } 129 }
126 130
127 AppInfoSummaryPanel::AppInfoSummaryPanel(Profile* profile, 131 AppInfoSummaryPanel::AppInfoSummaryPanel(Profile* profile,
128 const extensions::Extension* app) 132 const extensions::Extension* app)
129 : AppInfoPanel(profile, app), 133 : AppInfoPanel(profile, app),
130 description_heading_(NULL), 134 description_heading_(NULL),
131 description_label_(NULL), 135 description_label_(NULL),
132 details_heading_(NULL), 136 details_heading_(NULL),
137 size_title_(NULL),
138 size_value_(NULL),
133 version_title_(NULL), 139 version_title_(NULL),
134 version_value_(NULL), 140 version_value_(NULL),
135 installed_time_title_(NULL), 141 installed_time_title_(NULL),
136 installed_time_value_(NULL), 142 installed_time_value_(NULL),
137 last_run_time_title_(NULL), 143 last_run_time_title_(NULL),
138 last_run_time_value_(NULL), 144 last_run_time_value_(NULL),
139 launch_options_combobox_(NULL) { 145 launch_options_combobox_(NULL),
146 weak_ptr_factory_(this) {
140 // Create UI elements. 147 // Create UI elements.
141 CreateDescriptionControl(); 148 CreateDescriptionControl();
142 CreateDetailsControl(); 149 CreateDetailsControl();
143 CreateLaunchOptionControl(); 150 CreateLaunchOptionControl();
144 151
145 // Layout elements. 152 // Layout elements.
146 SetLayoutManager( 153 SetLayoutManager(
147 new views::BoxLayout(views::BoxLayout::kVertical, 154 new views::BoxLayout(views::BoxLayout::kVertical,
148 0, 155 0,
149 0, 156 0,
(...skipping 23 matching lines...) Expand all
173 180
174 description_heading_ = CreateHeading( 181 description_heading_ = CreateHeading(
175 l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_DESCRIPTION_TITLE)); 182 l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_DESCRIPTION_TITLE));
176 description_label_ = new views::Label(text); 183 description_label_ = new views::Label(text);
177 description_label_->SetMultiLine(true); 184 description_label_->SetMultiLine(true);
178 description_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 185 description_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
179 } 186 }
180 } 187 }
181 188
182 void AppInfoSummaryPanel::CreateDetailsControl() { 189 void AppInfoSummaryPanel::CreateDetailsControl() {
190 // The size doesn't make sense for component apps.
191 if (app_->location() != extensions::Manifest::COMPONENT) {
192 size_title_ = new views::Label(
193 l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_SIZE_LABEL));
194 size_title_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
195
196 size_value_ = new views::Label(
197 l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_SIZE_LOADING_LABEL));
198 size_value_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
199
200 StartCalculatingAppSize();
201 }
202
183 // The version doesn't make sense for bookmark apps. 203 // The version doesn't make sense for bookmark apps.
184 if (!app_->from_bookmark()) { 204 if (!app_->from_bookmark()) {
185 // Display 'Version: Built-in' for component apps. 205 // Display 'Version: Built-in' for component apps.
186 base::string16 version_str = base::ASCIIToUTF16(app_->VersionString()); 206 base::string16 version_str = base::ASCIIToUTF16(app_->VersionString());
187 if (app_->location() == extensions::Manifest::COMPONENT) 207 if (app_->location() == extensions::Manifest::COMPONENT)
188 version_str = l10n_util::GetStringUTF16( 208 version_str = l10n_util::GetStringUTF16(
189 IDS_APPLICATION_INFO_VERSION_BUILT_IN_LABEL); 209 IDS_APPLICATION_INFO_VERSION_BUILT_IN_LABEL);
190 210
191 version_title_ = new views::Label( 211 version_title_ = new views::Label(
192 l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_VERSION_LABEL)); 212 l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_VERSION_LABEL));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 if (installed_time_title_ && installed_time_value_) { 288 if (installed_time_title_ && installed_time_value_) {
269 details_stack->AddChildView( 289 details_stack->AddChildView(
270 CreateKeyValueField(installed_time_title_, installed_time_value_)); 290 CreateKeyValueField(installed_time_title_, installed_time_value_));
271 } 291 }
272 292
273 if (last_run_time_title_ && last_run_time_value_) { 293 if (last_run_time_title_ && last_run_time_value_) {
274 details_stack->AddChildView( 294 details_stack->AddChildView(
275 CreateKeyValueField(last_run_time_title_, last_run_time_value_)); 295 CreateKeyValueField(last_run_time_title_, last_run_time_value_));
276 } 296 }
277 297
298 if (size_title_ && size_value_) {
299 details_stack->AddChildView(
300 CreateKeyValueField(size_title_, size_value_));
301 }
302
278 views::View* vertical_stack = CreateVerticalStack(); 303 views::View* vertical_stack = CreateVerticalStack();
279 vertical_stack->AddChildView(details_heading_); 304 vertical_stack->AddChildView(details_heading_);
280 vertical_stack->AddChildView(details_stack); 305 vertical_stack->AddChildView(details_stack);
281 AddChildView(vertical_stack); 306 AddChildView(vertical_stack);
282 } 307 }
283 } 308 }
284 309
285 void AppInfoSummaryPanel::OnPerformAction(views::Combobox* combobox) { 310 void AppInfoSummaryPanel::OnPerformAction(views::Combobox* combobox) {
286 if (combobox == launch_options_combobox_) { 311 if (combobox == launch_options_combobox_) {
287 SetLaunchType(launch_options_combobox_model_->GetLaunchTypeAtIndex( 312 SetLaunchType(launch_options_combobox_model_->GetLaunchTypeAtIndex(
288 launch_options_combobox_->selected_index())); 313 launch_options_combobox_->selected_index()));
289 } else { 314 } else {
290 NOTREACHED(); 315 NOTREACHED();
291 } 316 }
292 } 317 }
293 318
319 void AppInfoSummaryPanel::StartCalculatingAppSize() {
320 base::PostTaskAndReplyWithResult(
321 content::BrowserThread::GetBlockingPool(),
322 FROM_HERE,
323 base::Bind(&base::ComputeDirectorySize, app_->path()),
324 base::Bind(&AppInfoSummaryPanel::OnAppSizeCalculated, AsWeakPtr()));
325 }
326
327 void AppInfoSummaryPanel::OnAppSizeCalculated(int64 app_size_in_bytes) {
328 size_value_->SetText(ui::FormatBytes(app_size_in_bytes));
329 }
330
294 base::Time AppInfoSummaryPanel::GetInstalledTime() const { 331 base::Time AppInfoSummaryPanel::GetInstalledTime() const {
295 return extensions::ExtensionPrefs::Get(profile_)->GetInstallTime(app_->id()); 332 return extensions::ExtensionPrefs::Get(profile_)->GetInstallTime(app_->id());
296 } 333 }
297 334
298 base::Time AppInfoSummaryPanel::GetLastLaunchedTime() const { 335 base::Time AppInfoSummaryPanel::GetLastLaunchedTime() const {
299 return extensions::ExtensionPrefs::Get(profile_) 336 return extensions::ExtensionPrefs::Get(profile_)
300 ->GetLastLaunchTime(app_->id()); 337 ->GetLastLaunchTime(app_->id());
301 } 338 }
302 339
303 extensions::LaunchType AppInfoSummaryPanel::GetLaunchType() const { 340 extensions::LaunchType AppInfoSummaryPanel::GetLaunchType() const {
304 return extensions::GetLaunchType(extensions::ExtensionPrefs::Get(profile_), 341 return extensions::GetLaunchType(extensions::ExtensionPrefs::Get(profile_),
305 app_); 342 app_);
306 } 343 }
307 344
308 void AppInfoSummaryPanel::SetLaunchType( 345 void AppInfoSummaryPanel::SetLaunchType(
309 extensions::LaunchType launch_type) const { 346 extensions::LaunchType launch_type) const {
310 DCHECK(CanSetLaunchType()); 347 DCHECK(CanSetLaunchType());
311 ExtensionService* service = 348 ExtensionService* service =
312 extensions::ExtensionSystem::Get(profile_)->extension_service(); 349 extensions::ExtensionSystem::Get(profile_)->extension_service();
313 extensions::SetLaunchType(service, app_->id(), launch_type); 350 extensions::SetLaunchType(service, app_->id(), launch_type);
314 } 351 }
315 352
316 bool AppInfoSummaryPanel::CanSetLaunchType() const { 353 bool AppInfoSummaryPanel::CanSetLaunchType() const {
317 // V2 apps don't have a launch type, and neither does the Chrome app. 354 // V2 apps don't have a launch type, and neither does the Chrome app.
318 return app_->id() != extension_misc::kChromeAppId && !app_->is_platform_app(); 355 return app_->id() != extension_misc::kChromeAppId && !app_->is_platform_app();
319 } 356 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698