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 15class 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. 23enum 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