summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa/download/download_item_controller.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/cocoa/download/download_item_controller.h')
-rw-r--r--chrome/browser/ui/cocoa/download/download_item_controller.h108
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