Home | History | Annotate | Download | only in download
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_CELL_H_
      6 #define CHROME_BROWSER_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_CELL_H_
      7 #pragma once
      8 
      9 #import "base/mac/cocoa_protocols.h"
     10 #include "base/memory/scoped_ptr.h"
     11 #import "chrome/browser/ui/cocoa/gradient_button_cell.h"
     12 
     13 #include "base/file_path.h"
     14 
     15 class BaseDownloadItemModel;
     16 
     17 // A button cell that implements the weird button/popup button hybrid that is
     18 // used by the download items.
     19 
     20 // The button represented by this cell consists of a button part on the left
     21 // and a dropdown-menu part on the right. This enum describes which part the
     22 // mouse cursor is over currently.
     23 enum DownloadItemMousePosition {
     24   kDownloadItemMouseOutside,
     25   kDownloadItemMouseOverButtonPart,
     26   kDownloadItemMouseOverDropdownPart
     27 };
     28 
     29 @interface DownloadItemCell : GradientButtonCell<NSAnimationDelegate> {
     30  @private
     31   // Track which part of the button the mouse is over
     32   DownloadItemMousePosition mousePosition_;
     33   int mouseInsideCount_;
     34   scoped_nsobject<NSTrackingArea> trackingAreaButton_;
     35   scoped_nsobject<NSTrackingArea> trackingAreaDropdown_;
     36 
     37   FilePath downloadPath_;  // stored unelided
     38   NSString* secondaryTitle_;
     39   NSFont* secondaryFont_;
     40   int percentDone_;
     41   scoped_nsobject<NSAnimation> completionAnimation_;
     42 
     43   BOOL isStatusTextVisible_;
     44   CGFloat titleY_;
     45   CGFloat statusAlpha_;
     46   scoped_nsobject<NSAnimation> hideStatusAnimation_;
     47 
     48   scoped_ptr<ui::ThemeProvider> themeProvider_;
     49 }
     50 
     51 @property(nonatomic, copy) NSString* secondaryTitle;
     52 @property(nonatomic, retain) NSFont* secondaryFont;
     53 
     54 - (void)setStateFromDownload:(BaseDownloadItemModel*)downloadModel;
     55 
     56 // Returns if the mouse is over the button part of the cell.
     57 - (BOOL)isMouseOverButtonPart;
     58 
     59 @end
     60 
     61 #endif  // CHROME_BROWSER_UI_COCOA_DOWNLOAD_DOWNLOAD_ITEM_CELL_H_
     62