diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-18 15:06:04 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-18 15:06:04 +0000 |
commit | f2e207f2c3aeb07187a87bcb2ed979b7551081e2 (patch) | |
tree | dcc8f2b5c32e1e6c145d0a643a4865a8521ca04f /chrome/browser/ui/cocoa | |
parent | 969b4063021a074b67029bffe2bb99c71c2cb984 (diff) | |
download | chromium_src-f2e207f2c3aeb07187a87bcb2ed979b7551081e2.zip chromium_src-f2e207f2c3aeb07187a87bcb2ed979b7551081e2.tar.gz chromium_src-f2e207f2c3aeb07187a87bcb2ed979b7551081e2.tar.bz2 |
[Mac] Show collected cookies in a tab view.
Old and boring: http://www.dropmocks.com/mSiEY
New hotness: http://www.dropmocks.com/mSiEM
XIB changes: Move the two subviews of the NSSplitView into an NSTabView instead, change the |splitView_| outlet to |tabView_| and |lowerScrollView_| to |blockedScrollView_|. Add a placeholder below the tab view, hooked up to the |cookieDetailsViewPlaceholder_| outlet.
BUG=63650
TEST=See bug for manual test.
Review URL: http://codereview.chromium.org/6673114
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78692 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/cocoa')
-rw-r--r-- | chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.h | 18 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm | 77 |
2 files changed, 50 insertions, 45 deletions
diff --git a/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.h b/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.h index 519b0a4..86d0195 100644 --- a/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.h +++ b/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.h @@ -13,6 +13,7 @@ #include "content/common/notification_registrar.h" @class CollectedCookiesWindowController; +@class CookieDetailsViewController; @class VerticalGradientView; class TabContents; @@ -77,12 +78,15 @@ class CollectedCookiesMac : public ConstrainedWindowMacDelegateCustomSheet, IBOutlet VerticalGradientView* infoBar_; IBOutlet NSImageView* infoBarIcon_; IBOutlet NSTextField* infoBarText_; - IBOutlet NSSplitView* splitView_; - IBOutlet NSScrollView* lowerScrollView_; + IBOutlet NSTabView* tabView_; + IBOutlet NSScrollView* blockedScrollView_; IBOutlet NSTextField* blockedCookiesText_; + IBOutlet NSView* cookieDetailsViewPlaceholder_; scoped_nsobject<NSViewAnimation> animation_; + scoped_nsobject<CookieDetailsViewController> detailsViewController_; + TabContents* tabContents_; // weak BOOL infoBarVisible_; @@ -103,19 +107,13 @@ class CollectedCookiesMac : public ConstrainedWindowMacDelegateCustomSheet, - (IBAction)allowForSessionFromOrigin:(id)sender; - (IBAction)blockOrigin:(id)sender; -// NSSplitView delegate methods: -- (CGFloat) splitView:(NSSplitView *)sender - constrainMinCoordinate:(CGFloat)proposedMin - ofSubviewAt:(NSInteger)offset; -- (BOOL)splitView:(NSSplitView *)sender canCollapseSubview:(NSView *)subview; - -// Returns the cocoaAllowedTreeModel_ and cocoaBlockedTreeModel_. +// Returns the |cocoaAllowedTreeModel_| and |cocoaBlockedTreeModel_|. - (CocoaCookieTreeNode*)cocoaAllowedTreeModel; - (CocoaCookieTreeNode*)cocoaBlockedTreeModel; - (void)setCocoaAllowedTreeModel:(CocoaCookieTreeNode*)model; - (void)setCocoaBlockedTreeModel:(CocoaCookieTreeNode*)model; -// Returns the allowedTreeModel_ and blockedTreeModel_. +// Returns the |allowedTreeModel_| and |blockedTreeModel_|. - (CookiesTreeModel*)allowedTreeModel; - (CookiesTreeModel*)blockedTreeModel; diff --git a/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm b/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm index 86a6203..c697fff 100644 --- a/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm +++ b/chrome/browser/ui/cocoa/content_settings/collected_cookies_mac.mm @@ -9,6 +9,7 @@ #import "base/mac/mac_util.h" #include "base/sys_string_conversions.h" #include "chrome/browser/profiles/profile.h" +#import "chrome/browser/ui/cocoa/content_settings/cookie_details_view_controller.h" #import "chrome/browser/ui/cocoa/vertical_gradient_view.h" #include "content/browser/tab_contents/tab_contents.h" #include "content/common/notification_details.h" @@ -32,8 +33,11 @@ const double kBannerGradientColorBottom[3] = {250.0 / 255.0, 230.0 / 255.0, 145.0 / 255.0}; const double kBannerStrokeColor = 135.0 / 255.0; -// Minimal height for the collected cookies dialog. -const CGFloat kMinCollectedCookiesViewHeight = 116; +enum TabViewItemIndices { + kAllowedCookiesTabIndex = 0, + kBlockedCookiesTabIndex +}; + } // namespace #pragma mark Bridge between the constrained window delegate and the sheet @@ -184,22 +188,27 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) { CGFloat textDeltaY = [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:blockedCookiesText_]; - // Shrink the upper custom view. - NSView* upperContentView = [[splitView_ subviews] objectAtIndex:0]; - NSRect frame = [upperContentView frame]; - [splitView_ setPosition:(frame.size.height - textDeltaY/2.0) - ofDividerAtIndex:0]; - - // Shrink the lower outline view. - frame = [lowerScrollView_ frame]; + // Shrink the blocked cookies outline view. + NSRect frame = [blockedScrollView_ frame]; frame.size.height -= textDeltaY; - [lowerScrollView_ setFrame:frame]; + [blockedScrollView_ setFrame:frame]; // Move the label down so it actually fits. frame = [blockedCookiesText_ frame]; frame.origin.y -= textDeltaY; [blockedCookiesText_ setFrame:frame]; } + + detailsViewController_.reset([[CookieDetailsViewController alloc] init]); + + NSView* detailView = [detailsViewController_.get() view]; + NSRect viewFrameRect = [cookieDetailsViewPlaceholder_ frame]; + [[detailsViewController_.get() view] setFrame:viewFrameRect]; + [[cookieDetailsViewPlaceholder_ superview] + replaceSubview:cookieDetailsViewPlaceholder_ + with:detailView]; + + [self tabView:tabView_ didSelectTabViewItem:[tabView_ selectedTabViewItem]]; } - (void)windowWillClose:(NSNotification*)notif { @@ -255,20 +264,6 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) { forTreeController:allowedTreeController_]; } -- (CGFloat) splitView:(NSSplitView *)sender - constrainMinCoordinate:(CGFloat)proposedMin - ofSubviewAt:(NSInteger)offset { - return proposedMin + kMinCollectedCookiesViewHeight; -} -- (CGFloat) splitView:(NSSplitView *)sender - constrainMaxCoordinate:(CGFloat)proposedMax - ofSubviewAt:(NSInteger)offset { - return proposedMax - kMinCollectedCookiesViewHeight; -} -- (BOOL)splitView:(NSSplitView *)sender canCollapseSubview:(NSView *)subview { - return YES; -} - - (CocoaCookieTreeNode*)cocoaAllowedTreeModel { return cocoaAllowedTreeModel_.get(); } @@ -450,16 +445,13 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) { NSWindow* sheet = [self window]; NSRect sheetFrame = [sheet frame]; NSRect infoBarFrame = [infoBar_ frame]; - NSRect splitViewFrame = [splitView_ frame]; + NSRect tabViewFrame = [tabView_ frame]; // Calculate the end position of the info bar and set it to its start // position. infoBarFrame.origin.y = NSHeight(sheetFrame); infoBarFrame.size.width = NSWidth(sheetFrame); - NSRect infoBarStartFrame = infoBarFrame; - infoBarStartFrame.origin.y += NSHeight(infoBarFrame); - infoBarStartFrame.size.height = 0.0; - [infoBar_ setFrame:infoBarStartFrame]; + [infoBar_ setFrame:infoBarFrame]; [[[self window] contentView] addSubview:infoBar_]; // Calculate the new position of the sheet. @@ -472,14 +464,12 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) { infoBar_, NSViewAnimationTargetKey, [NSValue valueWithRect:infoBarFrame], NSViewAnimationEndFrameKey, - [NSValue valueWithRect:infoBarStartFrame], - NSViewAnimationStartFrameKey, nil]]; - // Make sure the split view ends up in the right position. + // Make sure the tab view ends up in the right position. [animations addObject: [NSDictionary dictionaryWithObjectsAndKeys: - splitView_, NSViewAnimationTargetKey, - [NSValue valueWithRect:splitViewFrame], + tabView_, NSViewAnimationTargetKey, + [NSValue valueWithRect:tabViewFrame], NSViewAnimationEndFrameKey, nil]]; @@ -498,4 +488,21 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) { [animation_ startAnimation]; } +- (void) tabView:(NSTabView*)tabView + didSelectTabViewItem:(NSTabViewItem*)tabViewItem { + NSTreeController* treeController = nil; + switch ([tabView indexOfTabViewItem:tabViewItem]) { + case kAllowedCookiesTabIndex: + treeController = allowedTreeController_; + break; + case kBlockedCookiesTabIndex: + treeController = blockedTreeController_; + break; + default: + NOTREACHED(); + return; + } + [detailsViewController_ configureBindingsForTreeController:treeController]; +} + @end |