diff options
Diffstat (limited to 'chrome/browser/download_tab_view.cc')
-rw-r--r-- | chrome/browser/download_tab_view.cc | 139 |
1 files changed, 75 insertions, 64 deletions
diff --git a/chrome/browser/download_tab_view.cc b/chrome/browser/download_tab_view.cc index f5f6ceb..8da5887 100644 --- a/chrome/browser/download_tab_view.cc +++ b/chrome/browser/download_tab_view.cc @@ -73,18 +73,6 @@ static const SkColor kSelectedItemColor = SkColorSetRGB(215, 232, 255); // State key used to identify search text. static const wchar_t kSearchTextKey[] = L"st"; -// The size of the icon displayed. -static const int kIconSize = - download_util::GetProgressIconSize(download_util::BIG); - -// Size of the progress halo icon. -static const int kProgressIconSize = - download_util::GetProgressIconSize(download_util::BIG); - -// Centering the icon in the progress bitmaps -static const int kIconOffset = - download_util::GetProgressIconOffset(download_util::BIG); - // Sorting functor for DownloadItem -------------------------------------------- // Sort DownloadItems into ascending order by their start time. @@ -184,14 +172,14 @@ void DownloadItemTabView::GetPreferredSize(CSize* out) { CSize show_size; show_->GetPreferredSize(&show_size); - out->cx = kProgressIconSize + + out->cx = download_util::kBigProgressIconSize + 2 * kSpacer + kHorizontalButtonPadding + kFilenameSize + std::max(pause_size.cx + cancel_size.cx + kHorizontalButtonPadding, show_size.cx); - out->cy = kProgressIconSize; + out->cy = download_util::kBigProgressIconSize; } // Each DownloadItemTabView has reasonably complex layout requirements @@ -230,13 +218,15 @@ void DownloadItemTabView::LayoutDate() { since_->SetText(TimeFormat::RelativeDate(model_->start_time(), NULL)); since_->GetPreferredSize(&since_size); - since_->SetBounds(kLeftMargin, kIconOffset, kDateSize, since_size.cy); + since_->SetBounds(kLeftMargin, download_util::kBigProgressIconOffset, + kDateSize, since_size.cy); since_->SetVisible(true); CSize date_size; date_->SetText(base::TimeFormatShortDate(model_->start_time())); date_->GetPreferredSize(&date_size); - date_->SetBounds(kLeftMargin, since_size.cy + kVerticalPadding + kIconOffset, + date_->SetBounds(kLeftMargin, since_size.cy + kVerticalPadding + + download_util::kBigProgressIconOffset, kDateSize, date_size.cy); date_->SetVisible(true); } @@ -252,14 +242,14 @@ void DownloadItemTabView::LayoutComplete() { download_progress_->SetVisible(false); LayoutDate(); - int dx = kDownloadIconOffset - kIconOffset + kProgressIconSize + - kInfoPadding; + int dx = kDownloadIconOffset - download_util::kBigProgressIconOffset + + download_util::kBigProgressIconSize + kInfoPadding; // File name and URL CSize file_name_size; file_name_->SetText(model_->file_name()); file_name_->GetPreferredSize(&file_name_size); - file_name_->SetBounds(dx, kIconOffset, + file_name_->SetBounds(dx, download_util::kBigProgressIconOffset, std::min(kFilenameSize, static_cast<int>(file_name_size.cx)), file_name_size.cy); @@ -271,7 +261,8 @@ void DownloadItemTabView::LayoutComplete() { CSize url_size; download_url_->GetPreferredSize(&url_size); download_url_->SetBounds(dx, - file_name_size.cy + kVerticalPadding + kIconOffset, + file_name_size.cy + kVerticalPadding + + download_util::kBigProgressIconOffset, std::min(kFilenameSize, static_cast<int>(GetWidth() - dx)), url_size.cy); @@ -281,7 +272,8 @@ void DownloadItemTabView::LayoutComplete() { // Action button (text is constant and set in constructor) CSize show_size; show_->GetPreferredSize(&show_size); - show_->SetBounds(dx, ((file_name_size.cy + url_size.cy) / 2) + kIconOffset, + show_->SetBounds(dx, ((file_name_size.cy + url_size.cy) / 2) + + download_util::kBigProgressIconOffset, show_size.cx, show_size.cy); show_->SetVisible(true); show_->SetEnabled(true); @@ -298,14 +290,14 @@ void DownloadItemTabView::LayoutCancelled() { cancel_->SetEnabled(false); LayoutDate(); - int dx = kDownloadIconOffset - kIconOffset + kProgressIconSize + - kInfoPadding; + int dx = kDownloadIconOffset - download_util::kBigProgressIconOffset + + download_util::kBigProgressIconSize + kInfoPadding; // File name and URL, truncated to show cancelled status CSize file_name_size; file_name_->SetText(model_->file_name()); file_name_->GetPreferredSize(&file_name_size); - file_name_->SetBounds(dx, kIconOffset, + file_name_->SetBounds(dx, download_util::kBigProgressIconOffset, kFilenameSize - kProgressSize - kSpacer, file_name_size.cy); file_name_->SetVisible(true); @@ -316,7 +308,8 @@ void DownloadItemTabView::LayoutCancelled() { CSize url_size; download_url_->GetPreferredSize(&url_size); download_url_->SetBounds(dx, - file_name_size.cy + kVerticalPadding + kIconOffset, + file_name_size.cy + kVerticalPadding + + download_util::kBigProgressIconOffset, std::min(kFilenameSize - kProgressSize - kSpacer, static_cast<int>(GetWidth() - dx)), url_size.cy); @@ -329,7 +322,8 @@ void DownloadItemTabView::LayoutCancelled() { time_remaining_->SetColor(kStatusColor); time_remaining_->SetText(l10n_util::GetString(IDS_DOWNLOAD_TAB_CANCELLED)); time_remaining_->GetPreferredSize(&cancel_size); - time_remaining_->SetBounds(dx, kIconOffset, kProgressSize, cancel_size.cy); + time_remaining_->SetBounds(dx, download_util::kBigProgressIconOffset, + kProgressSize, cancel_size.cy); time_remaining_->SetVisible(true); // Display received size, we may not know the total size if the server didn't @@ -369,7 +363,7 @@ void DownloadItemTabView::LayoutCancelled() { download_progress_->GetPreferredSize(&byte_size); download_progress_->SetBounds(dx, file_name_size.cy + kVerticalPadding + - kIconOffset, + download_util::kBigProgressIconOffset, kProgressSize, byte_size.cy); download_progress_->SetVisible(true); @@ -382,14 +376,15 @@ void DownloadItemTabView::LayoutInProgress() { show_->SetEnabled(false); LayoutDate(); - int dx = kDownloadIconOffset - kIconOffset + kProgressIconSize + + int dx = kDownloadIconOffset - download_util::kBigProgressIconOffset + + download_util::kBigProgressIconSize + kInfoPadding; // File name and URL, truncated to show progress status CSize file_name_size; file_name_->SetText(model_->file_name()); file_name_->GetPreferredSize(&file_name_size); - file_name_->SetBounds(dx, kIconOffset, + file_name_->SetBounds(dx, download_util::kBigProgressIconOffset, kFilenameSize - kProgressSize - kSpacer, file_name_size.cy); file_name_->SetVisible(true); @@ -400,7 +395,7 @@ void DownloadItemTabView::LayoutInProgress() { CSize url_size; download_url_->GetPreferredSize(&url_size); download_url_->SetBounds(dx, file_name_size.cy + kVerticalPadding + - kIconOffset, + download_util::kBigProgressIconOffset, std::min(kFilenameSize - kProgressSize - kSpacer, static_cast<int>(GetWidth() - dx)), url_size.cy); @@ -472,7 +467,8 @@ void DownloadItemTabView::LayoutInProgress() { } // Time remaining - int y_pos = file_name_size.cy + kVerticalPadding + kIconOffset; + int y_pos = file_name_size.cy + kVerticalPadding + + download_util::kBigProgressIconOffset; CSize time_size; time_remaining_->SetColor(kStatusColor); if (model_->is_paused()) { @@ -480,18 +476,21 @@ void DownloadItemTabView::LayoutInProgress() { time_remaining_->SetText( l10n_util::GetString(IDS_DOWNLOAD_PROGRESS_PAUSED)); time_remaining_->GetPreferredSize(&time_size); - time_remaining_->SetBounds(dx, kIconOffset, kProgressSize, time_size.cy); + time_remaining_->SetBounds(dx, download_util::kBigProgressIconOffset, + kProgressSize, time_size.cy); time_remaining_->SetVisible(true); } else if (total > 0) { TimeDelta remaining; if (model_->TimeRemaining(&remaining)) time_remaining_->SetText(TimeFormat::TimeRemaining(remaining)); time_remaining_->GetPreferredSize(&time_size); - time_remaining_->SetBounds(dx, kIconOffset, kProgressSize, time_size.cy); + time_remaining_->SetBounds(dx, download_util::kBigProgressIconOffset, + kProgressSize, time_size.cy); time_remaining_->SetVisible(true); } else { time_remaining_->SetText(L""); - y_pos = ((file_name_size.cy + url_size.cy) / 2) + kIconOffset; + y_pos = ((file_name_size.cy + url_size.cy) / 2) + + download_util::kBigProgressIconOffset; } CSize byte_size; @@ -502,7 +501,8 @@ void DownloadItemTabView::LayoutInProgress() { download_progress_->SetVisible(true); dx += kProgressSize + kSpacer; - y_pos = ((file_name_size.cy + url_size.cy) / 2) + kIconOffset; + y_pos = ((file_name_size.cy + url_size.cy) / 2) + + download_util::kBigProgressIconOffset; // Pause (or Resume) / Cancel buttons. if (model_->is_paused()) @@ -531,7 +531,8 @@ void DownloadItemTabView::Paint(ChromeCanvas* canvas) { if (model_->state() == DownloadItem::IN_PROGRESS) { download_util::PaintDownloadProgress(canvas, this, - kDownloadIconOffset - kIconOffset, + kDownloadIconOffset - + download_util::kBigProgressIconOffset, 0, parent_->start_angle(), model_->PercentComplete(), @@ -544,7 +545,8 @@ void DownloadItemTabView::Paint(ChromeCanvas* canvas) { // View so we need to mirror it manually if the locale is RTL. SkBitmap* icon = parent_->LookupIcon(model_); if (icon) { - gfx::Rect icon_bounds(kDownloadIconOffset, kIconOffset, + gfx::Rect icon_bounds(kDownloadIconOffset, + download_util::kBigProgressIconOffset, icon->width(), icon->height()); icon_bounds.set_x(MirroredLeftPointForRect(icon_bounds)); canvas->DrawBitmapInt(*icon, icon_bounds.x(), icon_bounds.y()); @@ -558,10 +560,12 @@ void DownloadItemTabView::PaintBackground(ChromeCanvas* canvas) { // to explicitly mirror the position because the highlighted area is // directly painted on the canvas (as opposed to being represented as a // child View like the rest of the UI elements in DownloadItemTabView). - gfx::Rect highlighted_bounds(kDownloadIconOffset - kIconOffset, 0, - kProgressIconSize + kInfoPadding + - kFilenameSize, - kProgressIconSize); + gfx::Rect highlighted_bounds(kDownloadIconOffset - + download_util::kBigProgressIconOffset, + 0, + download_util::kBigProgressIconSize + + kInfoPadding + kFilenameSize, + download_util::kBigProgressIconSize); highlighted_bounds.set_x(MirroredLeftPointForRect(highlighted_bounds)); canvas->FillRectInt(kSelectedItemColor, @@ -587,10 +591,13 @@ bool DownloadItemTabView::OnMousePressed(const ChromeViews::MouseEvent& event) { // If the click is in the highlight region, then highlight this download. // Otherwise, remove the highlighting from any download. - CRect select_rect(kDownloadIconOffset - kIconOffset, 0, - kDownloadIconOffset - kIconOffset + - kProgressIconSize + kInfoPadding + kFilenameSize, - kProgressIconSize); + CRect select_rect(kDownloadIconOffset - download_util::kBigProgressIconOffset, + 0, + kDownloadIconOffset - + download_util::kBigProgressIconOffset + + download_util::kBigProgressIconSize + kInfoPadding + + kFilenameSize, + download_util::kBigProgressIconSize); // The position of the highlighted region does not take into account the // View's UI layout so we have to manually mirror the position if the View is @@ -624,10 +631,12 @@ bool DownloadItemTabView::OnMouseDragged(const ChromeViews::MouseEvent& event) { // mirrored, we can either flip the mouse X coordinate or flip the X position // of the drag rectangle. Flipping the mouse X coordinate is easier. point.x = MirroredXCoordinateInsideView(point.x); - CRect drag_rect(kDownloadIconOffset - kIconOffset, 0, - kDownloadIconOffset - kIconOffset + - kProgressIconSize + kInfoPadding + kFilenameSize, - kProgressIconSize); + CRect drag_rect(kDownloadIconOffset - download_util::kBigProgressIconOffset, + 0, + kDownloadIconOffset - download_util::kBigProgressIconOffset + + download_util::kBigProgressIconSize + kInfoPadding + + kFilenameSize, + download_util::kBigProgressIconSize); if (drag_rect.PtInRect(point)) { SkBitmap* icon = parent_->LookupIcon(model_); @@ -664,7 +673,7 @@ void DownloadItemTabView::LinkActivated(ChromeViews::Link* source, DownloadTabView::DownloadTabView(DownloadManager* model) : model_(model), start_angle_(download_util::kStartAngleDegrees), - scroll_helper_(kSpacer, kProgressIconSize + kSpacer), + scroll_helper_(kSpacer, download_util::kBigProgressIconSize + kSpacer), selected_index_(-1) { DCHECK(model_); } @@ -720,7 +729,7 @@ void DownloadTabView::Layout() { int y = GetY(); int w = v->GetWidth(); int h = static_cast<int>(downloads_.size()) * - (kProgressIconSize + kSpacer) + kSpacer; + (download_util::kBigProgressIconSize + kSpacer) + kSpacer; SetBounds(x, y, w, h); } } @@ -729,24 +738,24 @@ void DownloadTabView::Layout() { void DownloadTabView::Paint(ChromeCanvas* canvas) { ChromeViews::View::Paint(canvas); - if (kIconSize == 0 || downloads_.size() == 0) + if (download_util::kBigIconSize == 0 || downloads_.size() == 0) return; SkRect clip; if (canvas->getClipBounds(&clip)) { int row_start = (SkScalarRound(clip.fTop) - kSpacer) / - (kProgressIconSize + kSpacer); + (download_util::kBigProgressIconSize + kSpacer); int row_stop = SkScalarRound(clip.fBottom) / - (kProgressIconSize + kSpacer); + (download_util::kBigProgressIconSize + kSpacer); SkRect download_rect; for (int i = row_start; i <= row_stop; ++i) { - int y = i * (kProgressIconSize + kSpacer) + kSpacer; + int y = i * (download_util::kBigProgressIconSize + kSpacer) + kSpacer; if (HasFloatingViewForPoint(0, y)) continue; download_rect.set(SkIntToScalar(0), SkIntToScalar(y), SkIntToScalar(GetWidth()), - SkIntToScalar(y + kProgressIconSize)); + SkIntToScalar(y + download_util::kBigProgressIconSize)); if (SkRect::Intersects(clip, download_rect)) { // The DownloadManager stores downloads earliest first, but this // view displays latest first, so adjust the index: @@ -754,7 +763,7 @@ void DownloadTabView::Paint(ChromeCanvas* canvas) { download_renderer_.SetModel(downloads_[index], this); PaintFloatingView(canvas, &download_renderer_, 0, y, - GetWidth(), kProgressIconSize); + GetWidth(), download_util::kBigProgressIconSize); } } } @@ -763,13 +772,15 @@ void DownloadTabView::Paint(ChromeCanvas* canvas) { // Draw the DownloadItemTabView for the current position. bool DownloadTabView::GetFloatingViewIDForPoint(int x, int y, int* id) { if (y < kSpacer || - y > (kSpacer + kProgressIconSize) * static_cast<int>(downloads_.size())) + y > (kSpacer + download_util::kBigProgressIconSize) * + static_cast<int>(downloads_.size())) return false; // Are we hovering over a download or the spacer? If we're over the // download, create a floating view for it. - if ((y - kSpacer) % (kProgressIconSize + kSpacer) < kProgressIconSize) { - int row = y / (kProgressIconSize + kSpacer); + if ((y - kSpacer) % (download_util::kBigProgressIconSize + kSpacer) < + download_util::kBigProgressIconSize) { + int row = y / (download_util::kBigProgressIconSize + kSpacer); *id = static_cast<int>(downloads_.size()) - 1 - row; return true; } @@ -786,8 +797,8 @@ ChromeViews::View* DownloadTabView::CreateFloatingViewForIndex(int index) { DownloadItemTabView* dl = new DownloadItemTabView(); dl->SetModel(downloads_[index], this); int row = static_cast<int>(downloads_.size()) - 1 - index; - int y_pos = row * (kProgressIconSize + kSpacer) + kSpacer; - dl->SetBounds(0, y_pos, GetWidth(), kProgressIconSize); + int y_pos = row * (download_util::kBigProgressIconSize + kSpacer) + kSpacer; + dl->SetBounds(0, y_pos, GetWidth(), download_util::kBigProgressIconSize); dl->Layout(); AttachFloatingView(dl, index); return dl; @@ -1014,12 +1025,12 @@ bool DownloadTabView::ItemIsSelected(DownloadItem* download) { void DownloadTabView::SchedulePaintForViewAtIndex(int index) { int y = GetYPositionForIndex(index); - SchedulePaint(0, y, GetWidth(), kProgressIconSize); + SchedulePaint(0, y, GetWidth(), download_util::kBigProgressIconSize); } int DownloadTabView::GetYPositionForIndex(int index) { int row = static_cast<int>(downloads_.size()) - 1 - index; - return row * (kProgressIconSize + kSpacer) + kSpacer; + return row * (download_util::kBigProgressIconSize + kSpacer) + kSpacer; } void DownloadTabView::SetSearchText(const std::wstring& search_text) { |