diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 00:24:39 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-20 00:24:39 +0000 |
commit | dcefa305312e7045cce1ec6bc746a4ba26dec871 (patch) | |
tree | 7fbea6592ac6d4c59cc456227a3d5195818a7679 /chrome/browser/gtk/download_item_gtk.cc | |
parent | cf2a4e4fe2c337c2c4bf4f14443fc2cbb3f6e2d9 (diff) | |
download | chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.zip chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.tar.gz chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.tar.bz2 |
Linux download shelf icons first cut.
Nor do we have support for alternate file formats; nor do we have a default icon.
BUG=http://crbug.com/8631
Review URL: http://codereview.chromium.org/113571
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/download_item_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/download_item_gtk.cc | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/chrome/browser/gtk/download_item_gtk.cc b/chrome/browser/gtk/download_item_gtk.cc index 02f2f3f..80996f3 100644 --- a/chrome/browser/gtk/download_item_gtk.cc +++ b/chrome/browser/gtk/download_item_gtk.cc @@ -11,6 +11,7 @@ #include "base/basictypes.h" #include "base/string_util.h" #include "base/time.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/download/download_item_model.h" #include "chrome/browser/download/download_manager.h" #include "chrome/browser/download/download_shelf.h" @@ -21,6 +22,7 @@ #include "chrome/common/gtk_util.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" +#include "third_party/skia/include/core/SkBitmap.h" namespace { @@ -148,8 +150,10 @@ DownloadItemGtk::DownloadItemGtk(DownloadShelfGtk* parent_shelf, : parent_shelf_(parent_shelf), progress_angle_(download_util::kStartAngleDegrees), download_model_(download_model), - bounding_widget_(parent_shelf->GetRightBoundingWidget()) { + bounding_widget_(parent_shelf->GetRightBoundingWidget()), + icon_(NULL) { InitNineBoxes(); + LoadIcon(); body_ = gtk_button_new(); gtk_widget_set_app_paintable(body_, TRUE); @@ -326,6 +330,21 @@ void DownloadItemGtk::StopDownloadProgress() { progress_timer_.Stop(); } +// Icon loading functions. + +void DownloadItemGtk::OnLoadIconComplete(IconManager::Handle handle, + SkBitmap* icon_bitmap) { + icon_ = icon_bitmap; + gtk_widget_queue_draw(progress_area_); +} + +void DownloadItemGtk::LoadIcon() { + IconManager* im = g_browser_process->icon_manager(); + im->LoadIcon(download_model_->download()->full_path(), + IconLoader::SMALL, &icon_consumer_, + NewCallback(this, &DownloadItemGtk::OnLoadIconComplete)); +} + // static void DownloadItemGtk::InitNineBoxes() { if (body_nine_box_normal_) @@ -422,7 +441,13 @@ gboolean DownloadItemGtk::OnProgressAreaExpose(GtkWidget* widget, download_util::SMALL); } - // TODO(estade): paint download icon. + // TODO(estade): draw a default icon if |icon_| is null. + if (download_item->icon_) { + canvas.DrawBitmapInt(*download_item->icon_, + widget->allocation.x + download_util::kSmallProgressIconOffset, + widget->allocation.y + download_util::kSmallProgressIconOffset); + } + return TRUE; } |