Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: ui/message_center/cocoa/settings_entry_view.mm

Issue 1334363002: [Eraser] First pass at removing the notification center panel. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: peter comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/message_center/cocoa/settings_entry_view.h ('k') | ui/message_center/cocoa/status_item_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/message_center/cocoa/settings_entry_view.mm
diff --git a/ui/message_center/cocoa/settings_entry_view.mm b/ui/message_center/cocoa/settings_entry_view.mm
deleted file mode 100644
index 7006ab3749a27cf772a1ec779b8042b317d225b5..0000000000000000000000000000000000000000
--- a/ui/message_center/cocoa/settings_entry_view.mm
+++ /dev/null
@@ -1,293 +0,0 @@
-// Copyright 2013 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 "ui/message_center/cocoa/settings_entry_view.h"
-
-#include <algorithm>
-
-#include "base/strings/sys_string_conversions.h"
-#include "skia/ext/skia_utils_mac.h"
-#include "ui/base/resource/resource_bundle.h"
-#import "ui/message_center/cocoa/settings_controller.h"
-#include "ui/message_center/message_center_style.h"
-#include "ui/resources/grit/ui_resources.h"
-
-using message_center::settings::kEntryIconSize;
-using message_center::settings::kInternalHorizontalSpacing;
-
-// Size of the widget rendered for us by Cocoa.
-const int kCocoaCheckboxSize = 14;
-
-// Intrinsic padding pixels out of our control.
-// Cocoa gives the checkmark some blank space on either side.
-const int kIntrinsicCheckmarkLeftPadding = 2;
-const int kIntrinsicCheckmarkRightPadding = 4;
-// Labels have a bit of whitespace to the left, which can throw
-// off measurements.
-const int kIntrinsicTextLeftPadding = 1;
-
-// The learn more image is bigger than the actual size of the learn more
-// pixels, this represents the difference.
-const int kIntrinsicLearnMorePadding = 2;
-
-// Corrected padding values used in layout.
-// This computes the amout of padding based on the area reserved for the
-// checkbox and the actual checkbox size in pixels.
-const int kCheckmarkPaddingNecessary =
- (message_center::settings::kCheckboxSizeWithPadding - kCocoaCheckboxSize) /
- 2;
-
-// These represent the additional padding that we must give the checkmark
-// control based on the required padding and the intrinsic padding.
-const int kCorrectedCheckmarkLeftPadding =
- kCheckmarkPaddingNecessary - kIntrinsicCheckmarkLeftPadding;
-const int kCorrectedCheckmarkRightPadding =
- kCheckmarkPaddingNecessary + kInternalHorizontalSpacing -
- kIntrinsicCheckmarkRightPadding;
-
-// The amount of space we want, based on the spec and the intrinsic text space
-// included by Cocoa.
-const int kCorrectedIconTextPadding =
- kInternalHorizontalSpacing - kIntrinsicTextLeftPadding;
-
-// We want a certain amount of space to the right of the learn more button,
-// this metric incorporates the intrinsic learn more blank space to compute it.
-const int kCorrectedEntryRightPadding =
- kInternalHorizontalSpacing - kIntrinsicLearnMorePadding;
-
-////////////////////////////////////////////////////////////////////////////////
-
-@interface MCSettingsButton : NSButton
-@end
-
-@implementation MCSettingsButton
-// drawRect: needs to fill the button with a background, otherwise we don't get
-// subpixel antialiasing.
-- (void)drawRect:(NSRect)dirtyRect {
- NSColor* color = gfx::SkColorToCalibratedNSColor(
- message_center::kMessageCenterBackgroundColor);
- [color set];
- NSRectFill(dirtyRect);
- [super drawRect:dirtyRect];
-}
-@end
-
-@interface MCSettingsButtonCell : NSButtonCell {
- // A checkbox's regular image is the checkmark image. This additional image
- // is used for the favicon or app icon shown next to the checkmark.
- base::scoped_nsobject<NSImage> extraImage_;
-}
-- (void)setExtraImage:(NSImage*)extraImage;
-@end
-
-@implementation MCSettingsButtonCell
-- (BOOL)isOpaque {
- return YES;
-}
-
-- (void)setExtraImage:(NSImage*)extraImage {
- extraImage_.reset([extraImage retain]);
-}
-
-- (NSRect)drawTitle:(NSAttributedString*)title
- withFrame:(NSRect)frame
- inView:(NSView*)controlView {
- CGFloat inset = kCorrectedCheckmarkRightPadding;
- // drawTitle:withFrame:inView: draws the checkmark image. Draw the extra
- // image as part of the checkbox's text.
- if (extraImage_) {
- NSRect imageRect = frame;
- imageRect.origin.x += inset;
- // Center the image vertically.
- if (NSHeight(frame) > kEntryIconSize)
- imageRect.origin.y += (NSHeight(frame) - kEntryIconSize) / 2;
- imageRect.size = NSMakeSize(kEntryIconSize, kEntryIconSize);
- [extraImage_ drawInRect:imageRect
- fromRect:NSZeroRect
- operation:NSCompositeSourceOver
- fraction:1.0
- respectFlipped:YES
- hints:nil];
-
- inset += kEntryIconSize + kCorrectedIconTextPadding;
- }
- frame.origin.x += inset;
- frame.size.width -= inset;
- return [super drawTitle:title withFrame:frame inView:controlView];
-}
-
-- (NSSize)cellSizeForBounds:(NSRect)aRect {
- NSSize size = [super cellSizeForBounds:aRect];
- size.width += kCorrectedCheckmarkRightPadding;
- if (extraImage_) {
- size.width += kEntryIconSize + kCorrectedIconTextPadding;
- size.height = std::max(static_cast<CGFloat>(kEntryIconSize), size.height);
- }
- return size;
-}
-
-- (NSUInteger)hitTestForEvent:(NSEvent*)event
- inRect:(NSRect)cellFrame
- ofView:(NSView*)controlView {
- NSUInteger result =
- [super hitTestForEvent:event inRect:cellFrame ofView:controlView];
- if (result == NSCellHitNone) {
- // The default button cell does hit testing on the attributed string. Since
- // this cell draws additional spacing and an icon in front of the string,
- // tweak the hit testing result.
- NSPoint point =
- [controlView convertPoint:[event locationInWindow] fromView:nil];
-
- NSRect rect = [self titleRectForBounds:[controlView bounds]];
- rect.size = [[self attributedTitle] size];
- rect.size.width += kCorrectedCheckmarkRightPadding;
-
- if (extraImage_)
- rect.size.width += kEntryIconSize + kCorrectedIconTextPadding;
-
- if (NSPointInRect(point, rect))
- result = NSCellHitContentArea | NSCellHitTrackableArea;
- }
- return result;
-}
-@end
-
-@implementation MCSettingsEntryView
-- (id)initWithController:(MCSettingsController*)controller
- notifier:(message_center::Notifier*)notifier
- frame:(NSRect)frame
- hasSeparator:(BOOL)hasSeparator {
- if ((self = [super initWithFrame:frame])) {
- [self setBoxType:NSBoxCustom];
- [self setBorderType:NSNoBorder];
- [self setTitlePosition:NSNoTitle];
- [self setContentViewMargins:NSZeroSize];
-
- hasSeparator_ = hasSeparator;
- controller_ = controller;
- notifier_ = notifier;
- if (!notifier->icon.IsEmpty())
- notifierIcon_.reset(notifier->icon.CopyNSImage());
- [self layoutEntryView];
- }
- return self;
-}
-
-- (void)setNotifierIcon:(NSImage*)notifierIcon {
- notifierIcon_.reset([notifierIcon retain]);
- [self layoutEntryView];
-}
-
-- (NSButton*)checkbox {
- return checkbox_;
-}
-
-- (void)layoutEntryView {
- BOOL hasLearnMore =
- [controller_ notifierHasAdvancedSettings:notifier_->notifier_id];
-
- // Now calculate the space available for the checkbox button.
- NSRect checkboxFrame = [self bounds];
- checkboxFrame.origin.x += kCorrectedCheckmarkLeftPadding;
- checkboxFrame.size.width -=
- kCorrectedCheckmarkLeftPadding + kCorrectedEntryRightPadding;
-
- NSRect learnMoreFrame =
- NSMakeRect(checkboxFrame.origin.x + checkboxFrame.size.width,
- checkboxFrame.origin.y,
- 0,
- checkboxFrame.size.height);
-
- // Initially place the learn more button right-aligned.
- if (hasLearnMore) {
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- NSImage* defaultImage =
- rb.GetNativeImageNamed(IDR_NOTIFICATION_ADVANCED_SETTINGS).ToNSImage();
- NSSize defaultImageSize = [defaultImage size];
- learnMoreFrame.size.width = defaultImageSize.width;
- learnMoreFrame.origin.x -= defaultImageSize.width;
-
- // May need to center the image if it's shorter than the entry.
- if (defaultImageSize.height < learnMoreFrame.size.height) {
- learnMoreFrame.origin.y +=
- (learnMoreFrame.size.height - defaultImageSize.height) / 2;
- learnMoreFrame.size.height = defaultImageSize.height;
- }
-
- // Since we have an image then we need to ensure that the text from the
- // checkbox doesn't overlap with the learn more image.
- checkboxFrame.size.width -=
- kCorrectedIconTextPadding + learnMoreFrame.size.width;
-
- if (!learnMoreButton_.get()) {
- learnMoreButton_.reset(
- [[HoverImageButton alloc] initWithFrame:learnMoreFrame]);
- [self addSubview:learnMoreButton_];
- } else {
- [learnMoreButton_ setFrame:learnMoreFrame];
- }
- [learnMoreButton_ setDefaultImage:defaultImage];
- [learnMoreButton_ setHoverImage:rb.GetNativeImageNamed(
- IDR_NOTIFICATION_ADVANCED_SETTINGS_HOVER).ToNSImage()];
- [learnMoreButton_ setPressedImage:rb.GetNativeImageNamed(
- IDR_NOTIFICATION_ADVANCED_SETTINGS_PRESSED).ToNSImage()];
- [learnMoreButton_ setBordered:NO];
- [learnMoreButton_ setTarget:self];
- [learnMoreButton_ setAction:@selector(learnMoreClicked:)];
- }
-
- if (!checkbox_.get()) {
- checkbox_.reset([[MCSettingsButton alloc] initWithFrame:checkboxFrame]);
- [self addSubview:checkbox_];
- } else {
- [checkbox_ setFrame:checkboxFrame];
- }
-
- base::scoped_nsobject<MCSettingsButtonCell> cell([[MCSettingsButtonCell alloc]
- initTextCell:base::SysUTF16ToNSString(notifier_->name)]);
- if ([notifierIcon_ isValid])
- [cell setExtraImage:notifierIcon_];
-
- [checkbox_ setCell:cell];
- [checkbox_ setButtonType:NSSwitchButton];
- [checkbox_ setState:notifier_->enabled ? NSOnState : NSOffState];
- [checkbox_ setTarget:self];
- [checkbox_ setAction:@selector(checkboxClicked:)];
-
- if (hasSeparator_) {
- NSRect separatorRect = [self bounds];
- separatorRect.size.height = 1;
- if (!separator_.get()) {
- separator_.reset([[NSBox alloc] initWithFrame:separatorRect]);
- [separator_ setBoxType:NSBoxCustom];
- [separator_ setBorderType:NSLineBorder];
- [separator_ setBorderColor:gfx::SkColorToCalibratedNSColor(
- message_center::settings::kEntrySeparatorColor)];
- [separator_ setTitlePosition:NSNoTitle];
- [separator_ setContentViewMargins:NSZeroSize];
- [self addSubview:separator_];
- } else {
- [separator_ setFrame:separatorRect];
- }
- }
-}
-
-- (void)checkboxClicked:(id)sender {
- BOOL enabled = [sender state] == NSOnState;
- [controller_ setSettingsNotifier:notifier_ enabled:enabled];
-}
-
-- (void)learnMoreClicked:(id)sender {
- [controller_ learnMoreClicked:notifier_];
-}
-
-// Testing API /////////////////////////////////////////////////////////////////
-
-- (void)clickLearnMore {
- [learnMoreButton_ performClick:nil];
-}
-
-@end
-
-///////////////////////////////////////////////////////////////////////////////
« no previous file with comments | « ui/message_center/cocoa/settings_entry_view.h ('k') | ui/message_center/cocoa/status_item_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698