summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/download_item_gtk.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 00:24:39 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 00:24:39 +0000
commitdcefa305312e7045cce1ec6bc746a4ba26dec871 (patch)
tree7fbea6592ac6d4c59cc456227a3d5195818a7679 /chrome/browser/gtk/download_item_gtk.cc
parentcf2a4e4fe2c337c2c4bf4f14443fc2cbb3f6e2d9 (diff)
downloadchromium_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.cc29
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;
}