diff options
Diffstat (limited to 'chrome/browser/ui/cocoa/download/download_item_controller.h')
-rw-r--r-- | chrome/browser/ui/cocoa/download/download_item_controller.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/download/download_item_controller.h b/chrome/browser/ui/cocoa/download/download_item_controller.h new file mode 100644 index 0000000..c41ff43 --- /dev/null +++ b/chrome/browser/ui/cocoa/download/download_item_controller.h @@ -0,0 +1,108 @@ +// 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. + +#import <Cocoa/Cocoa.h> + +#include "base/scoped_ptr.h" +#include "base/time.h" + +class BaseDownloadItemModel; +@class ChromeUILocalizer; +@class DownloadItemCell; +class DownloadItem; +@class DownloadItemButton; +class DownloadItemMac; +class DownloadShelfContextMenuMac; +@class DownloadShelfController; +@class GTMWidthBasedTweaker; + +// A controller class that manages one download item. + +@interface DownloadItemController : NSViewController { + @private + IBOutlet DownloadItemButton* progressView_; + IBOutlet DownloadItemCell* cell_; + + IBOutlet NSMenu* activeDownloadMenu_; + IBOutlet NSMenu* completeDownloadMenu_; + + // This is shown instead of progressView_ for dangerous downloads. + IBOutlet NSView* dangerousDownloadView_; + IBOutlet NSTextField* dangerousDownloadLabel_; + IBOutlet NSButton* dangerousDownloadConfirmButton_; + + // Needed to find out how much the tweaker changed sizes to update the + // other views. + IBOutlet GTMWidthBasedTweaker* buttonTweaker_; + + // Because the confirm text and button for dangerous downloads are determined + // at runtime, an outlet to the localizer is needed to construct the layout + // tweaker in awakeFromNib in order to adjust the UI after all strings are + // determined. + IBOutlet ChromeUILocalizer* localizer_; + + IBOutlet NSImageView* image_; + + scoped_ptr<DownloadItemMac> bridge_; + scoped_ptr<DownloadShelfContextMenuMac> menuBridge_; + + // Weak pointer to the shelf that owns us. + DownloadShelfController* shelf_; + + // The time at which this view was created. + base::Time creationTime_; + + // The state of this item. + enum DownoadItemState { + kNormal, + kDangerous + } state_; +}; + +// Takes ownership of |downloadModel|. +- (id)initWithModel:(BaseDownloadItemModel*)downloadModel + shelf:(DownloadShelfController*)shelf; + +// Updates the UI and menu state from |downloadModel|. +- (void)setStateFromDownload:(BaseDownloadItemModel*)downloadModel; + +// Remove ourself from the download UI. +- (void)remove; + +// Update item's visibility depending on if the item is still completely +// contained in its parent. +- (void)updateVisibility:(id)sender; + +// Called after a download is opened. +- (void)downloadWasOpened; + +// Asynchronous icon loading callback. +- (void)setIcon:(NSImage*)icon; + +// Download item button clicked +- (IBAction)handleButtonClick:(id)sender; + +// Returns the size this item wants to have. +- (NSSize)preferredSize; + +// Returns the DownloadItem model object belonging to this item. +- (DownloadItem*)download; + +// Updates the tooltip with the download's path. +- (void)updateToolTip; + +// Handling of dangerous downloads +- (void)clearDangerousMode; +- (BOOL)isDangerousMode; +- (IBAction)saveDownload:(id)sender; +- (IBAction)discardDownload:(id)sender; + +// Context menu handlers. +- (IBAction)handleOpen:(id)sender; +- (IBAction)handleAlwaysOpen:(id)sender; +- (IBAction)handleReveal:(id)sender; +- (IBAction)handleCancel:(id)sender; +- (IBAction)handleTogglePause:(id)sender; + +@end |