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

Unified Diff: ui/message_center/cocoa/settings_controller.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: Moar fix 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
Index: ui/message_center/cocoa/settings_controller.mm
diff --git a/ui/message_center/cocoa/settings_controller.mm b/ui/message_center/cocoa/settings_controller.mm
deleted file mode 100644
index 37adba2b098f33f5902ed0eb966b293c9db0bf4f..0000000000000000000000000000000000000000
--- a/ui/message_center/cocoa/settings_controller.mm
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright (c) 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_controller.h"
-
-#include <algorithm>
-
-#include "base/mac/foundation_util.h"
-#import "base/mac/scoped_nsobject.h"
-#include "base/stl_util.h"
-#include "base/strings/sys_string_conversions.h"
-#include "skia/ext/skia_utils_mac.h"
-#include "ui/base/l10n/l10n_util.h"
-#import "ui/message_center/cocoa/opaque_views.h"
-#import "ui/message_center/cocoa/settings_entry_view.h"
-#import "ui/message_center/cocoa/tray_view_controller.h"
-#include "ui/message_center/message_center_style.h"
-#include "ui/strings/grit/ui_strings.h"
-
-using message_center::settings::kHorizontalMargin;
-using message_center::settings::kEntryHeight;
-
-// Intrinsic padding pixels out of our control.
-const int kIntrinsicHeaderTextTopPadding = 3;
-const int kIntrinsicSubheaderTextTopPadding = 5;
-const int kIntrinsicSubheaderTextBottomPadding = 3;
-const int kIntrinsicDropDownVerticalPadding = 2;
-const int kIntrinsicDropDownHorizontalPadding = 3;
-
-// Corrected padding values used in layout.
-// Calculated additional blank space above the header text, including
-// the intrinsic blank space above the header label.
-const int kCorrectedHeaderTextTopPadding =
- message_center::settings::kTopMargin - kIntrinsicHeaderTextTopPadding;
-
-// Calculated additional blank space above the subheader text, including
-// the intrinsic blank space above the subheader label.
-const int kCorrectedSubheaderTextTopPadding =
- message_center::settings::kTitleToDescriptionSpace -
- kIntrinsicSubheaderTextTopPadding;
-
-// Calcoulated additional vertical padding for the drop-down, including the
-// blank space included with the drop-down control.
-const int kCorrectedDropDownTopPadding =
- message_center::settings::kDescriptionToSwitcherSpace -
- kIntrinsicDropDownVerticalPadding - kIntrinsicSubheaderTextBottomPadding;
-
-// Calculated additional horizontal blank space for the drop down, including
-// the blank space included with the drop-down control.
-const int kCorrectedDropDownMargin =
- kHorizontalMargin - kIntrinsicDropDownHorizontalPadding;
-
-@interface MCSettingsController (Private)
-// Sets the icon on the checkbox corresponding to |notifiers_[index]|.
-- (void)setIcon:(NSImage*)icon forNotifierIndex:(size_t)index;
-
-- (void)setIcon:(NSImage*)icon
- forNotifierId:(const message_center::NotifierId&)id;
-
-// Returns the NSButton corresponding to the checkbox for |notifiers_[index]|.
-- (MCSettingsEntryView*)entryForNotifierAtIndex:(size_t)index;
-
-// Update the contents view.
-- (void)updateView;
-
-// Handler for the notifier group dropdown menu.
-- (void)notifierGroupSelectionChanged:(id)sender;
-
-@end
-
-namespace message_center {
-
-NotifierSettingsObserverMac::~NotifierSettingsObserverMac() {}
-
-void NotifierSettingsObserverMac::UpdateIconImage(const NotifierId& notifier_id,
- const gfx::Image& icon) {
- [settings_controller_ setIcon:icon.AsNSImage() forNotifierId:notifier_id];
-}
-
-void NotifierSettingsObserverMac::NotifierGroupChanged() {
- [settings_controller_ updateView];
-}
-
-void NotifierSettingsObserverMac::NotifierEnabledChanged(
- const NotifierId& notifier_id, bool enabled) {}
-
-} // namespace message_center
-
-@implementation MCSettingsController
-
-- (id)initWithProvider:(message_center::NotifierSettingsProvider*)provider
- trayViewController:(MCTrayViewController*)trayViewController {
- if ((self = [super initWithNibName:nil bundle:nil])) {
- observer_.reset(new message_center::NotifierSettingsObserverMac(self));
- provider_ = provider;
- trayViewController_ = trayViewController;
- provider_->AddObserver(observer_.get());
- }
- return self;
-}
-
-- (void)dealloc {
- provider_->RemoveObserver(observer_.get());
- provider_->OnNotifierSettingsClosing();
- STLDeleteElements(&notifiers_);
- [super dealloc];
-}
-
-- (NSTextField*)newLabelWithFrame:(NSRect)frame {
- NSColor* color = gfx::SkColorToCalibratedNSColor(
- message_center::kMessageCenterBackgroundColor);
- MCTextField* label =
- [[MCTextField alloc] initWithFrame:frame backgroundColor:color];
-
- return label;
-}
-
-- (void)updateView {
- notifiers_.clear();
- [trayViewController_ updateSettings];
-}
-
-- (void)loadView {
- DCHECK(notifiers_.empty());
- provider_->GetNotifierList(&notifiers_);
- CGFloat maxHeight = [MCTrayViewController maxTrayClientHeight];
-
- // Container view.
- NSRect fullFrame =
- NSMakeRect(0, 0, [MCTrayViewController trayWidth], maxHeight);
- base::scoped_nsobject<NSBox> view([[NSBox alloc] initWithFrame:fullFrame]);
- [view setBorderType:NSNoBorder];
- [view setBoxType:NSBoxCustom];
- [view setContentViewMargins:NSZeroSize];
- [view setFillColor:gfx::SkColorToCalibratedNSColor(
- message_center::kMessageCenterBackgroundColor)];
- [view setTitlePosition:NSNoTitle];
- [self setView:view];
-
- // "Settings" text.
- NSRect headerFrame = NSMakeRect(kHorizontalMargin,
- kHorizontalMargin,
- NSWidth(fullFrame),
- NSHeight(fullFrame));
- settingsText_.reset([self newLabelWithFrame:headerFrame]);
- [settingsText_ setTextColor:
- gfx::SkColorToCalibratedNSColor(message_center::kRegularTextColor)];
- [settingsText_
- setFont:[NSFont messageFontOfSize:message_center::kTitleFontSize]];
-
- [settingsText_ setStringValue:
- l10n_util::GetNSString(IDS_MESSAGE_CENTER_SETTINGS_BUTTON_LABEL)];
- [settingsText_ sizeToFit];
- headerFrame = [settingsText_ frame];
- headerFrame.origin.y = NSMaxY(fullFrame) - kCorrectedHeaderTextTopPadding -
- NSHeight(headerFrame);
- [[self view] addSubview:settingsText_];
-
- // Subheader.
- NSRect subheaderFrame = NSMakeRect(kHorizontalMargin,
- kHorizontalMargin,
- NSWidth(fullFrame),
- NSHeight(fullFrame));
- detailsText_.reset([self newLabelWithFrame:subheaderFrame]);
- [detailsText_ setTextColor:
- gfx::SkColorToCalibratedNSColor(message_center::kDimTextColor)];
- [detailsText_
- setFont:[NSFont messageFontOfSize:message_center::kMessageFontSize]];
-
- size_t groupCount = provider_->GetNotifierGroupCount();
- [detailsText_ setStringValue:l10n_util::GetNSString(
- groupCount > 1 ? IDS_MESSAGE_CENTER_SETTINGS_DESCRIPTION_MULTIUSER
- : IDS_MESSAGE_CENTER_SETTINGS_DIALOG_DESCRIPTION)];
- [detailsText_ sizeToFit];
- subheaderFrame = [detailsText_ frame];
- subheaderFrame.origin.y =
- NSMinY(headerFrame) - kCorrectedSubheaderTextTopPadding -
- NSHeight(subheaderFrame);
- [[self view] addSubview:detailsText_];
-
- // Profile switcher is only needed for more than one profile.
- NSRect dropDownButtonFrame = subheaderFrame;
- if (groupCount > 1) {
- dropDownButtonFrame = NSMakeRect(kCorrectedDropDownMargin,
- kHorizontalMargin,
- NSWidth(fullFrame),
- NSHeight(fullFrame));
- groupDropDownButton_.reset(
- [[MCDropDown alloc] initWithFrame:dropDownButtonFrame pullsDown:YES]);
- [groupDropDownButton_
- setBackgroundColor:gfx::SkColorToCalibratedNSColor(
- message_center::kMessageCenterBackgroundColor)];
- [groupDropDownButton_ setAction:@selector(notifierGroupSelectionChanged:)];
- [groupDropDownButton_ setTarget:self];
- // Add a dummy item for pull-down.
- [groupDropDownButton_ addItemWithTitle:@""];
- base::string16 title;
- for (size_t i = 0; i < groupCount; ++i) {
- const message_center::NotifierGroup& group =
- provider_->GetNotifierGroupAt(i);
- base::string16 item =
- group.login_info.empty() ? group.name : group.login_info;
- [groupDropDownButton_ addItemWithTitle:base::SysUTF16ToNSString(item)];
- if (provider_->IsNotifierGroupActiveAt(i)) {
- title = item;
- [[groupDropDownButton_ lastItem] setState:NSOnState];
- }
- }
- [groupDropDownButton_ setTitle:base::SysUTF16ToNSString(title)];
- [groupDropDownButton_ sizeToFit];
- dropDownButtonFrame = [groupDropDownButton_ frame];
- dropDownButtonFrame.origin.y =
- NSMinY(subheaderFrame) - kCorrectedDropDownTopPadding -
- NSHeight(dropDownButtonFrame);
- dropDownButtonFrame.size.width =
- NSWidth(fullFrame) - 2 * kCorrectedDropDownMargin;
- [[self view] addSubview:groupDropDownButton_];
- }
-
- // Document view for the notifier settings.
- CGFloat y = 0;
- NSRect documentFrame = NSMakeRect(0, 0, NSWidth(fullFrame), 0);
- base::scoped_nsobject<NSView> documentView(
- [[NSView alloc] initWithFrame:documentFrame]);
- int notifierCount = notifiers_.size();
- for (int i = notifierCount - 1; i >= 0; --i) {
- message_center::Notifier* notifier = notifiers_[i];
- // TODO(thakis): Use a custom button cell.
- NSRect frame = NSMakeRect(kHorizontalMargin,
- y,
- NSWidth(documentFrame) - kHorizontalMargin * 2,
- kEntryHeight);
-
- base::scoped_nsobject<MCSettingsEntryView> entryView(
- [[MCSettingsEntryView alloc]
- initWithController:self
- notifier:notifier
- frame:frame
- hasSeparator:(i != notifierCount - 1)]);
- [documentView addSubview:entryView];
- y += NSHeight(frame);
- }
-
- documentFrame.size.height = y - kIntrinsicDropDownVerticalPadding;
- [documentView setFrame:documentFrame];
-
- // Scroll view for the notifier settings.
- NSRect scrollFrame = documentFrame;
- scrollFrame.origin.y = 0;
- CGFloat remainingHeight = NSMinY(dropDownButtonFrame) - NSMinY(scrollFrame);
-
- if (NSHeight(documentFrame) < remainingHeight) {
- // Everything fits without scrolling.
- CGFloat delta = remainingHeight - NSHeight(documentFrame);
- headerFrame.origin.y -= delta;
- subheaderFrame.origin.y -= delta;
- dropDownButtonFrame.origin.y -= delta;
- fullFrame.size.height -= delta;
- } else {
- scrollFrame.size.height = remainingHeight;
- }
-
- scrollView_.reset([[NSScrollView alloc] initWithFrame:scrollFrame]);
- [scrollView_ setAutohidesScrollers:YES];
- [scrollView_ setAutoresizingMask:NSViewMinYMargin];
- [scrollView_ setDocumentView:documentView];
- [scrollView_ setDrawsBackground:NO];
- [scrollView_ setHasHorizontalScroller:NO];
- [scrollView_ setHasVerticalScroller:YES];
-
- // Scroll to top.
- NSPoint newScrollOrigin =
- NSMakePoint(0.0,
- NSMaxY([[scrollView_ documentView] frame]) -
- NSHeight([[scrollView_ contentView] bounds]));
- [[scrollView_ documentView] scrollPoint:newScrollOrigin];
-
- // Set final sizes.
- [[self view] setFrame:fullFrame];
- [[self view] addSubview:scrollView_];
- [settingsText_ setFrame:headerFrame];
- [detailsText_ setFrame:subheaderFrame];
- [groupDropDownButton_ setFrame:dropDownButtonFrame];
-}
-
-- (void)setSettingsNotifier:(message_center::Notifier*)notifier
- enabled:(BOOL)enabled {
- provider_->SetNotifierEnabled(*notifier, enabled);
-}
-
-- (void)learnMoreClicked:(message_center::Notifier*)notifier {
- provider_->OnNotifierAdvancedSettingsRequested(notifier->notifier_id, NULL);
-}
-
-// Testing API /////////////////////////////////////////////////////////////////
-
-- (NSPopUpButton*)groupDropDownButton {
- return groupDropDownButton_;
-}
-
-- (NSScrollView*)scrollView {
- return scrollView_;
-}
-
-// Private API /////////////////////////////////////////////////////////////////
-
-- (void)setIcon:(NSImage*)icon forNotifierIndex:(size_t)index {
- MCSettingsEntryView* entry = [self entryForNotifierAtIndex:index];
- [entry setNotifierIcon:icon];
-}
-
-- (void)setIcon:(NSImage*)icon
- forNotifierId:(const message_center::NotifierId&)id {
- for (size_t i = 0; i < notifiers_.size(); ++i) {
- if (notifiers_[i]->notifier_id == id) {
- [self setIcon:icon forNotifierIndex:i];
- return;
- }
- }
-}
-
-- (MCSettingsEntryView*)entryForNotifierAtIndex:(size_t)index {
- NSArray* subviews = [[scrollView_ documentView] subviews];
- // The checkboxes are in bottom-top order, the checkbox for notifiers_[0] is
- // last.
- DCHECK_LT(notifiers_.size() - 1 - index, [subviews count]);
- NSView* view = [subviews objectAtIndex:notifiers_.size() - 1 - index];
- return base::mac::ObjCCastStrict<MCSettingsEntryView>(view);
-}
-
-- (void)notifierGroupSelectionChanged:(id)sender {
- DCHECK_EQ(groupDropDownButton_.get(), sender);
- NSPopUpButton* button = static_cast<NSPopUpButton*>(sender);
- // The first item is a dummy item.
- provider_->SwitchToNotifierGroup([button indexOfSelectedItem] - 1);
-}
-
-- (BOOL)notifierHasAdvancedSettings:(const message_center::NotifierId&)id {
- return provider_->NotifierHasAdvancedSettings(id);
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698