summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/download_item_view.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/download_item_view.h')
-rw-r--r--chrome/browser/views/download_item_view.h273
1 files changed, 5 insertions, 268 deletions
diff --git a/chrome/browser/views/download_item_view.h b/chrome/browser/views/download_item_view.h
index bd76c0d..cb7dd5c 100644
--- a/chrome/browser/views/download_item_view.h
+++ b/chrome/browser/views/download_item_view.h
@@ -1,276 +1,13 @@
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//
-// A ChromeView that implements one download on the Download shelf.
-// Each DownloadItemView contains an application icon, a text label
-// indicating the download's file name, a text label indicating the
-// download's status (such as the number of bytes downloaded so far)
-// and a button for canceling an in progress download, or opening
-// the completed download.
-//
-// The DownloadItemView lives in the Browser, and has a corresponding
-// DownloadController that receives / writes data which lives in the
-// Renderer.
-#ifndef CHROME_BROWSER_VIEWS_DOWNLOAD_ITEM_VIEW_H__
-#define CHROME_BROWSER_VIEWS_DOWNLOAD_ITEM_VIEW_H__
+#ifndef CHROME_BROWSER_VIEWS_DOWNLOAD_ITEM_VIEW_H_
+#define CHROME_BROWSER_VIEWS_DOWNLOAD_ITEM_VIEW_H_
#pragma once
-#include <string>
+#include "chrome/browser/ui/views/download_item_view.h"
+// TODO(beng): remove this file once all includes have been updated.
-#include "app/slide_animation.h"
-#include "base/basictypes.h"
-#include "base/scoped_ptr.h"
-#include "base/time.h"
-#include "base/timer.h"
-#include "chrome/browser/cancelable_request.h"
-#include "chrome/browser/download/download_item.h"
-#include "chrome/browser/download/download_manager.h"
-#include "chrome/browser/icon_manager.h"
-#include "gfx/font.h"
-#include "views/event.h"
-#include "views/controls/button/button.h"
-#include "views/view.h"
+#endif // CHROME_BROWSER_VIEWS_DOWNLOAD_ITEM_VIEW_H_
-namespace views {
-class Label;
-class NativeButton;
-}
-class BaseDownloadItemModel;
-class DownloadShelfView;
-class SkBitmap;
-class DownloadShelfContextMenuWin;
-
-class DownloadItemView : public views::ButtonListener,
- public views::View,
- public DownloadItem::Observer,
- public AnimationDelegate {
- public:
- DownloadItemView(DownloadItem* download,
- DownloadShelfView* parent,
- BaseDownloadItemModel* model);
- virtual ~DownloadItemView();
-
- // DownloadObserver method
- virtual void OnDownloadUpdated(DownloadItem* download);
- virtual void OnDownloadFileCompleted(DownloadItem* download) { }
- virtual void OnDownloadOpened(DownloadItem* download);
-
- // View overrides
- virtual void Layout();
- virtual void Paint(gfx::Canvas* canvas);
- virtual gfx::Size GetPreferredSize();
- virtual void OnMouseExited(const views::MouseEvent& event);
- virtual void OnMouseMoved(const views::MouseEvent& event);
- virtual bool OnMousePressed(const views::MouseEvent& event);
- virtual void OnMouseReleased(const views::MouseEvent& event, bool canceled);
- virtual bool OnMouseDragged(const views::MouseEvent& event);
- virtual bool OnKeyPressed(const views::KeyEvent& e);
- virtual void ShowContextMenu(const gfx::Point& p, bool is_mouse_gesture);
- virtual AccessibilityTypes::Role GetAccessibleRole();
- virtual AccessibilityTypes::State GetAccessibleState();
-
- // ButtonListener implementation.
- virtual void ButtonPressed(views::Button* sender, const views::Event& event);
-
- // AnimationDelegate implementation.
- virtual void AnimationProgressed(const Animation* animation);
-
- // Timer callback for handling animations
- void UpdateDownloadProgress();
- void StartDownloadProgress();
- void StopDownloadProgress();
-
- // IconManager::Client interface.
- void OnExtractIconComplete(IconManager::Handle handle, SkBitmap* icon_bitmap);
-
- // Returns the DownloadItem model object belonging to this item.
- DownloadItem* download() const { return download_; }
-
- private:
- enum State {
- NORMAL = 0,
- HOT,
- PUSHED,
- DANGEROUS
- };
-
- // The image set associated with the part containing the icon and text.
- struct BodyImageSet {
- SkBitmap* top_left;
- SkBitmap* left;
- SkBitmap* bottom_left;
- SkBitmap* top;
- SkBitmap* center;
- SkBitmap* bottom;
- SkBitmap* top_right;
- SkBitmap* right;
- SkBitmap* bottom_right;
- };
-
- // The image set associated with the drop-down button on the right.
- struct DropDownImageSet {
- SkBitmap* top;
- SkBitmap* center;
- SkBitmap* bottom;
- };
-
- void OpenDownload();
-
- void LoadIcon();
-
- virtual bool GetTooltipText(const gfx::Point& p, std::wstring* tooltip);
-
- // Convenience method to paint the 3 vertical bitmaps (bottom, middle, top)
- // that form the background.
- void PaintBitmaps(gfx::Canvas* canvas,
- const SkBitmap* top_bitmap,
- const SkBitmap* center_bitmap,
- const SkBitmap* bottom_bitmap,
- int x,
- int y,
- int height,
- int width);
-
- // Sets the state and triggers a repaint.
- void SetState(State body_state, State drop_down_state);
-
- // Whether we are in the dangerous mode.
- bool IsDangerousMode() { return body_state_ == DANGEROUS; }
-
- // Reverts from dangerous mode to normal download mode.
- void ClearDangerousMode();
-
- // Sets |size| with the size of the Save and Discard buttons (they have the
- // same size).
- gfx::Size GetButtonSize();
-
- // Sizes the dangerous download label to a minimum width available using 2
- // lines. The size is computed only the first time this method is invoked
- // and simply returned on subsequent calls.
- void SizeLabelToMinWidth();
-
- // Reenables the item after it has been disabled when a user clicked it to
- // open the downloaded file.
- void Reenable();
-
- // Given |x|, returns whether |x| is within the x coordinate range of
- // the drop-down button or not.
- bool InDropDownButtonXCoordinateRange(int x);
-
- // Update the accessible name to reflect the current state of the control,
- // so that screenreaders can access the filename, status text, and
- // dangerous download warning message (if any).
- void UpdateAccessibleName();
-
- // The different images used for the background.
- BodyImageSet normal_body_image_set_;
- BodyImageSet hot_body_image_set_;
- BodyImageSet pushed_body_image_set_;
- BodyImageSet dangerous_mode_body_image_set_;
- DropDownImageSet normal_drop_down_image_set_;
- DropDownImageSet hot_drop_down_image_set_;
- DropDownImageSet pushed_drop_down_image_set_;
-
- // The warning icon showns for dangerous downloads.
- SkBitmap* warning_icon_;
-
- // The model we query for display information
- DownloadItem* download_;
-
- // Our parent view that owns us.
- DownloadShelfView* parent_;
-
- // Elements of our particular download
- std::wstring status_text_;
- bool show_status_text_;
-
- // The font used to print the file name and status.
- gfx::Font font_;
-
- // The tooltip.
- std::wstring tooltip_text_;
-
- // The current state (normal, hot or pushed) of the body and drop-down.
- State body_state_;
- State drop_down_state_;
-
- // In degrees, for downloads with no known total size.
- int progress_angle_;
-
- // The left and right x coordinates of the drop-down button.
- int drop_down_x_left_;
- int drop_down_x_right_;
-
- // Used when we are showing the menu to show the drop-down as pressed.
- bool drop_down_pressed_;
-
- // The height of the box formed by the background images and its labels.
- int box_height_;
-
- // The y coordinate of the box formed by the background images and its labels.
- int box_y_;
-
- // Whether we are dragging the download button.
- bool dragging_;
-
- // Whether we are tracking a possible drag.
- bool starting_drag_;
-
- // Position that a possible drag started at.
- gfx::Point drag_start_point_;
-
- // For canceling an in progress icon request.
- CancelableRequestConsumerT<int, 0> icon_consumer_;
-
- // A model class to control the status text we display and the cancel
- // behavior.
- // This class owns the pointer.
- scoped_ptr<BaseDownloadItemModel> model_;
-
- // Hover animations for our body and drop buttons.
- scoped_ptr<SlideAnimation> body_hover_animation_;
- scoped_ptr<SlideAnimation> drop_hover_animation_;
-
- // Animation for download complete.
- scoped_ptr<SlideAnimation> complete_animation_;
-
- // Progress animation
- base::RepeatingTimer<DownloadItemView> progress_timer_;
-
- // Dangerous mode buttons.
- views::NativeButton* save_button_;
- views::NativeButton* discard_button_;
-
- // Dangerous mode label.
- views::Label* dangerous_download_label_;
-
- // Whether the dangerous mode label has been sized yet.
- bool dangerous_download_label_sized_;
-
- // The size of the buttons. Cached so animation works when hidden.
- gfx::Size cached_button_size_;
-
- // Whether we are currently disabled as part of opening the downloaded file.
- bool disabled_while_opening_;
-
- // The time at which this view was created.
- base::Time creation_time_;
-
- // Method factory used to delay reenabling of the item when opening the
- // downloaded file.
- ScopedRunnableMethodFactory<DownloadItemView> reenable_method_factory_;
-
- // The currently running download context menu.
- scoped_ptr<DownloadShelfContextMenuWin> context_menu_;
-
- // If non-NULL, set to true when this object is deleted.
- // (Used when showing the context menu as it runs an inner message loop that
- // might delete us).
- bool* deleted_;
-
- DISALLOW_COPY_AND_ASSIGN(DownloadItemView);
-};
-
-#endif // CHROME_BROWSER_VIEWS_DOWNLOAD_ITEM_VIEW_H__