Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/download/download_item_model.h" | 5 #include "chrome/browser/download/download_item_model.h" |
| 6 | 6 |
| 7 #include "base/i18n/number_formatting.h" | 7 #include "base/i18n/number_formatting.h" |
| 8 #include "base/i18n/rtl.h" | 8 #include "base/i18n/rtl.h" |
| 9 #include "base/string16.h" | 9 #include "base/string16.h" |
| 10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 // DownloadItemModel | 31 // DownloadItemModel |
| 32 | 32 |
| 33 DownloadItemModel::DownloadItemModel(DownloadItem* download) | 33 DownloadItemModel::DownloadItemModel(DownloadItem* download) |
| 34 : BaseDownloadItemModel(download) { | 34 : BaseDownloadItemModel(download) { |
| 35 } | 35 } |
| 36 | 36 |
| 37 void DownloadItemModel::CancelTask() { | 37 void DownloadItemModel::CancelTask() { |
| 38 download_->Cancel(true /* update history service */); | 38 download_->Cancel(true /* update history service */); |
| 39 } | 39 } |
| 40 | 40 |
| 41 string16 DownloadItemModel::GetProgressText() { | |
| 42 int64 size = 0; | |
| 43 int64 total= 0; | |
|
sky
2012/04/04 16:55:34
nit: 'total ='
ahendrickson
2012/04/04 17:49:32
Done.
| |
| 44 string16 simple_size; | |
| 45 string16 simple_total; | |
| 46 GetStatusData(&size, &total, &simple_size, &simple_total); | |
| 47 | |
| 48 if (total > 0) { | |
| 49 // We know the total. | |
| 50 return l10n_util::GetStringFUTF16( | |
| 51 IDS_DOWNLOAD_STATUS_IN_PROGRESS_SIZES_ONLY, simple_size, simple_total); | |
| 52 } | |
| 53 | |
| 54 return ui::FormatBytes(size); | |
| 55 } | |
| 56 | |
| 41 string16 DownloadItemModel::GetStatusText() { | 57 string16 DownloadItemModel::GetStatusText() { |
| 42 int64 size = download_->GetReceivedBytes(); | 58 int64 size = 0; |
| 43 int64 total = download_->AllDataSaved() ? size : download_->GetTotalBytes(); | 59 int64 total= 0; |
| 44 bool is_gdata = false; | 60 string16 simple_size; |
| 45 #if defined(OS_CHROMEOS) | 61 string16 simple_total; |
| 46 is_gdata = gdata::GDataDownloadObserver::IsGDataDownload(download_); | 62 bool is_gdata = GetStatusData(&size, &total, &simple_size, &simple_total); |
| 47 // For GData downloads, the size is the count of bytes uploaded. | |
| 48 if (is_gdata) | |
| 49 size = gdata::GDataDownloadObserver::GetUploadedBytes(download_); | |
| 50 #endif | |
| 51 | |
| 52 ui::DataUnits amount_units = ui::GetByteDisplayUnits(total); | |
| 53 string16 simple_size = ui::FormatBytesWithUnits(size, amount_units, false); | |
| 54 | |
| 55 // In RTL locales, we render the text "size/total" in an RTL context. This | |
| 56 // is problematic since a string such as "123/456 MB" is displayed | |
| 57 // as "MB 123/456" because it ends with an LTR run. In order to solve this, | |
| 58 // we mark the total string as an LTR string if the UI layout is | |
| 59 // right-to-left so that the string "456 MB" is treated as an LTR run. | |
| 60 string16 simple_total = base::i18n::GetDisplayStringInLTRDirectionality( | |
| 61 ui::FormatBytesWithUnits(total, amount_units, true)); | |
| 62 | 63 |
| 63 // TODO(asanka): Calculate a TimeRemaining() for GData uploads. | 64 // TODO(asanka): Calculate a TimeRemaining() for GData uploads. |
| 64 TimeDelta remaining; | 65 TimeDelta remaining; |
| 65 string16 simple_time; | 66 string16 simple_time; |
| 66 if (download_->IsInProgress() && download_->IsPaused()) { | 67 if (download_->IsInProgress() && download_->IsPaused()) { |
| 67 simple_time = l10n_util::GetStringUTF16(IDS_DOWNLOAD_PROGRESS_PAUSED); | 68 simple_time = l10n_util::GetStringUTF16(IDS_DOWNLOAD_PROGRESS_PAUSED); |
| 68 } else if (!is_gdata && download_->TimeRemaining(&remaining)) { | 69 } else if (!is_gdata && download_->TimeRemaining(&remaining)) { |
| 69 simple_time = download_->GetOpenWhenComplete() ? | 70 simple_time = download_->GetOpenWhenComplete() ? |
| 70 TimeFormat::TimeRemainingShort(remaining) : | 71 TimeFormat::TimeRemainingShort(remaining) : |
| 71 TimeFormat::TimeRemaining(remaining); | 72 TimeFormat::TimeRemaining(remaining); |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 return false; | 231 return false; |
| 231 } | 232 } |
| 232 NOTREACHED(); | 233 NOTREACHED(); |
| 233 return false; | 234 return false; |
| 234 } | 235 } |
| 235 | 236 |
| 236 bool DownloadItemModel::IsDangerous() { | 237 bool DownloadItemModel::IsDangerous() { |
| 237 return download_->GetSafetyState() == DownloadItem::DANGEROUS; | 238 return download_->GetSafetyState() == DownloadItem::DANGEROUS; |
| 238 } | 239 } |
| 239 | 240 |
| 241 bool DownloadItemModel::GetStatusData(int64* size_return, | |
| 242 int64* total_return, | |
| 243 string16* simple_size_return, | |
| 244 string16* simple_total_return) { | |
| 245 int64 size = download_->GetReceivedBytes(); | |
| 246 int64 total = download_->AllDataSaved() ? size : download_->GetTotalBytes(); | |
| 247 bool is_gdata = false; | |
| 248 | |
| 249 #if defined(OS_CHROMEOS) | |
| 250 is_gdata = gdata::GDataDownloadObserver::IsGDataDownload(download_); | |
| 251 // For GData downloads, the size is the count of bytes uploaded. | |
| 252 if (is_gdata) | |
| 253 size = gdata::GDataDownloadObserver::GetUploadedBytes(download_); | |
| 254 #endif | |
| 255 | |
| 256 ui::DataUnits amount_units = ui::GetByteDisplayUnits(total); | |
| 257 string16 simple_size = ui::FormatBytesWithUnits(size, amount_units, false); | |
| 258 | |
| 259 // In RTL locales, we render the text "size/total" in an RTL context. This | |
| 260 // is problematic since a string such as "123/456 MB" is displayed | |
| 261 // as "MB 123/456" because it ends with an LTR run. In order to solve this, | |
| 262 // we mark the total string as an LTR string if the UI layout is | |
| 263 // right-to-left so that the string "456 MB" is treated as an LTR run. | |
| 264 string16 simple_total = base::i18n::GetDisplayStringInLTRDirectionality( | |
| 265 ui::FormatBytesWithUnits(total, amount_units, true)); | |
| 266 | |
| 267 if (size_return) | |
| 268 *size_return = size; | |
| 269 if (total_return) | |
| 270 *total_return = total; | |
| 271 if (simple_size_return) | |
| 272 *simple_size_return = simple_size; | |
| 273 if (simple_total_return) | |
| 274 *simple_total_return = simple_total; | |
| 275 | |
| 276 return is_gdata; | |
| 277 } | |
| 278 | |
| 240 // static | 279 // static |
| 241 string16 BaseDownloadItemModel::InterruptReasonStatusMessage(int reason) { | 280 string16 BaseDownloadItemModel::InterruptReasonStatusMessage(int reason) { |
| 242 int string_id = 0; | 281 int string_id = 0; |
| 243 | 282 |
| 244 switch (reason) { | 283 switch (reason) { |
| 245 case content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED: | 284 case content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED: |
| 246 string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS_ACCESS_DENIED; | 285 string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS_ACCESS_DENIED; |
| 247 break; | 286 break; |
| 248 case content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE: | 287 case content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE: |
| 249 string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS_DISK_FULL; | 288 string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS_DISK_FULL; |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 346 break; | 385 break; |
| 347 default: | 386 default: |
| 348 string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS; | 387 string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS; |
| 349 break; | 388 break; |
| 350 } | 389 } |
| 351 | 390 |
| 352 status_text = l10n_util::GetStringUTF16(string_id); | 391 status_text = l10n_util::GetStringUTF16(string_id); |
| 353 | 392 |
| 354 return status_text; | 393 return status_text; |
| 355 } | 394 } |
| OLD | NEW |