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

Unified Diff: chrome/browser/ui/cocoa/font_language_settings_controller.mm

Issue 6339002: [Mac] Consolidate all files relating to preferences in a subdir of c/b/ui/coc... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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: chrome/browser/ui/cocoa/font_language_settings_controller.mm
===================================================================
--- chrome/browser/ui/cocoa/font_language_settings_controller.mm (revision 71447)
+++ chrome/browser/ui/cocoa/font_language_settings_controller.mm (working copy)
@@ -1,280 +0,0 @@
-// 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 "chrome/browser/ui/cocoa/font_language_settings_controller.h"
-
-#import <Cocoa/Cocoa.h>
-#import "base/mac/mac_util.h"
-#include "base/sys_string_conversions.h"
-#include "chrome/browser/character_encoding.h"
-#include "chrome/browser/fonts_languages_window.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/pref_names.h"
-
-NSString* const kCharacterInfoEncoding = @"encoding";
-NSString* const kCharacterInfoName = @"name";
-NSString* const kCharacterInfoID = @"id";
-
-void ShowFontsLanguagesWindow(gfx::NativeWindow window,
- FontsLanguagesPage page,
- Profile* profile) {
- NOTIMPLEMENTED();
-}
-
-@interface FontLanguageSettingsController (Private)
-- (void)updateDisplayField:(NSTextField*)field
- withFont:(NSFont*)font
- withLabel:(NSTextField*)label;
-@end
-
-@implementation FontLanguageSettingsController
-
-- (id)initWithProfile:(Profile*)profile {
- DCHECK(profile);
- NSString* nibpath = [base::mac::MainAppBundle()
- pathForResource:@"FontLanguageSettings"
- ofType:@"nib"];
- if ((self = [super initWithWindowNibPath:nibpath owner:self])) {
- profile_ = profile;
-
- // Convert the name/size preference values to NSFont objects.
- serifName_.Init(prefs::kWebKitSerifFontFamily, profile->GetPrefs(), NULL);
- serifSize_.Init(prefs::kWebKitDefaultFontSize, profile->GetPrefs(), NULL);
- NSString* serif = base::SysUTF8ToNSString(serifName_.GetValue());
- serifFont_.reset(
- [[NSFont fontWithName:serif size:serifSize_.GetValue()] retain]);
-
- sansSerifName_.Init(prefs::kWebKitSansSerifFontFamily, profile->GetPrefs(),
- NULL);
- sansSerifSize_.Init(prefs::kWebKitDefaultFontSize, profile->GetPrefs(),
- NULL);
- NSString* sansSerif = base::SysUTF8ToNSString(sansSerifName_.GetValue());
- sansSerifFont_.reset(
- [[NSFont fontWithName:sansSerif
- size:sansSerifSize_.GetValue()] retain]);
-
- fixedWidthName_.Init(prefs::kWebKitFixedFontFamily, profile->GetPrefs(),
- NULL);
- fixedWidthSize_.Init(prefs::kWebKitDefaultFixedFontSize,
- profile->GetPrefs(), NULL);
- NSString* fixedWidth = base::SysUTF8ToNSString(fixedWidthName_.GetValue());
- fixedWidthFont_.reset(
- [[NSFont fontWithName:fixedWidth
- size:fixedWidthSize_.GetValue()] retain]);
-
- // Generate a list of encodings.
- NSInteger count = CharacterEncoding::GetSupportCanonicalEncodingCount();
- NSMutableArray* encodings = [NSMutableArray arrayWithCapacity:count];
- for (NSInteger i = 0; i < count; ++i) {
- int commandId = CharacterEncoding::GetEncodingCommandIdByIndex(i);
- string16 name = CharacterEncoding::\
- GetCanonicalEncodingDisplayNameByCommandId(commandId);
- std::string encoding =
- CharacterEncoding::GetCanonicalEncodingNameByCommandId(commandId);
- NSDictionary* strings = [NSDictionary dictionaryWithObjectsAndKeys:
- base::SysUTF16ToNSString(name), kCharacterInfoName,
- base::SysUTF8ToNSString(encoding), kCharacterInfoEncoding,
- [NSNumber numberWithInt:commandId], kCharacterInfoID,
- nil
- ];
- [encodings addObject:strings];
- }
-
- // Sort the encodings.
- scoped_nsobject<NSSortDescriptor> sorter(
- [[NSSortDescriptor alloc] initWithKey:kCharacterInfoName
- ascending:YES]);
- NSArray* sorterArray = [NSArray arrayWithObject:sorter.get()];
- encodings_.reset(
- [[encodings sortedArrayUsingDescriptors:sorterArray] retain]);
-
- // Find and set the default encoding.
- defaultEncoding_.Init(prefs::kDefaultCharset, profile->GetPrefs(), NULL);
- NSString* defaultEncoding =
- base::SysUTF8ToNSString(defaultEncoding_.GetValue());
- NSUInteger index = 0;
- for (NSDictionary* entry in encodings_.get()) {
- NSString* encoding = [entry objectForKey:kCharacterInfoEncoding];
- if ([encoding isEqualToString:defaultEncoding]) {
- defaultEncodingIndex_ = index;
- break;
- }
- ++index;
- }
-
- // Register as a KVO observer so we can receive updates when the encoding
- // changes.
- [self addObserver:self
- forKeyPath:@"defaultEncodingIndex_"
- options:NSKeyValueObservingOptionNew
- context:NULL];
- }
- return self;
-}
-
-- (void)dealloc {
- [self removeObserver:self forKeyPath:@"defaultEncodingIndex_"];
- [super dealloc];
-}
-
-- (void)awakeFromNib {
- DCHECK([self window]);
- [[self window] setDelegate:self];
-
- // Set up the font display.
- [self updateDisplayField:serifField_
- withFont:serifFont_.get()
- withLabel:serifLabel_];
- [self updateDisplayField:sansSerifField_
- withFont:sansSerifFont_.get()
- withLabel:sansSerifLabel_];
- [self updateDisplayField:fixedWidthField_
- withFont:fixedWidthFont_.get()
- withLabel:fixedWidthLabel_];
-}
-
-- (void)windowWillClose:(NSNotification*)notif {
- [self autorelease];
-}
-
-- (IBAction)selectFont:(id)sender {
- if (sender == serifButton_) {
- currentFont_ = serifFont_.get();
- currentType_ = FontSettingSerif;
- } else if (sender == sansSerifButton_) {
- currentFont_ = sansSerifFont_.get();
- currentType_ = FontSettingSansSerif;
- } else if (sender == fixedWidthButton_) {
- currentFont_ = fixedWidthFont_.get();
- currentType_ = FontSettingFixed;
- } else {
- NOTREACHED();
- }
-
- // Validate whatever editing is currently happening.
- if ([[self window] makeFirstResponder:nil]) {
- NSFontManager* manager = [NSFontManager sharedFontManager];
- [manager setTarget:self];
- [manager setSelectedFont:currentFont_ isMultiple:NO];
- [manager orderFrontFontPanel:self];
- }
-}
-
-// Called by the font manager when the user has selected a new font. We should
-// then persist those changes into the preference system.
-- (void)changeFont:(id)fontManager {
- switch (currentType_) {
- case FontSettingSerif:
- serifFont_.reset([[fontManager convertFont:serifFont_] retain]);
- [self updateDisplayField:serifField_
- withFont:serifFont_.get()
- withLabel:serifLabel_];
- changedSerif_ = YES;
- break;
- case FontSettingSansSerif:
- sansSerifFont_.reset([[fontManager convertFont:sansSerifFont_] retain]);
- [self updateDisplayField:sansSerifField_
- withFont:sansSerifFont_.get()
- withLabel:sansSerifLabel_];
- changedSansSerif_ = YES;
- break;
- case FontSettingFixed:
- fixedWidthFont_.reset(
- [[fontManager convertFont:fixedWidthFont_] retain]);
- [self updateDisplayField:fixedWidthField_
- withFont:fixedWidthFont_.get()
- withLabel:fixedWidthLabel_];
- changedFixedWidth_ = YES;
- break;
- default:
- NOTREACHED();
- }
-}
-
-- (IBAction)closeSheet:(id)sender {
- NSFontPanel* panel = [[NSFontManager sharedFontManager] fontPanel:NO];
- [panel close];
- [NSApp endSheet:[self window]];
-}
-
-- (IBAction)save:(id)sender {
- if (changedSerif_) {
- serifName_.SetValue(base::SysNSStringToUTF8([serifFont_ fontName]));
- serifSize_.SetValue([serifFont_ pointSize]);
- }
- if (changedSansSerif_) {
- sansSerifName_.SetValue(
- base::SysNSStringToUTF8([sansSerifFont_ fontName]));
- sansSerifSize_.SetValue([sansSerifFont_ pointSize]);
- }
- if (changedFixedWidth_) {
- fixedWidthName_.SetValue(
- base::SysNSStringToUTF8([fixedWidthFont_ fontName]));
- fixedWidthSize_.SetValue([fixedWidthFont_ pointSize]);
- }
- if (changedEncoding_) {
- NSDictionary* object = [encodings_ objectAtIndex:defaultEncodingIndex_];
- NSString* newEncoding = [object objectForKey:kCharacterInfoEncoding];
- std::string encoding = base::SysNSStringToUTF8(newEncoding);
- defaultEncoding_.SetValue(encoding);
- }
- [self closeSheet:sender];
-}
-
-- (NSArray*)encodings {
- return encodings_.get();
-}
-
-// KVO notification.
-- (void)observeValueForKeyPath:(NSString*)keyPath
- ofObject:(id)object
- change:(NSDictionary*)change
- context:(void*)context {
- // If this is the default encoding, then set the flag to persist the value.
- if ([keyPath isEqual:@"defaultEncodingIndex_"]) {
- changedEncoding_ = YES;
- return;
- }
-
- [super observeValueForKeyPath:keyPath
- ofObject:object
- change:change
- context:context];
-}
-
-#pragma mark Private
-
-// Set the baseline for the font field to be aligned with the baseline
-// of its corresponding label.
-- (NSPoint)getFontFieldOrigin:(NSTextField*)field
- forLabel:(NSTextField*)label {
- [field sizeToFit];
- NSRect labelFrame = [label frame];
- NSPoint newOrigin =
- [[label superview] convertPoint:labelFrame.origin
- toView:[field superview]];
- newOrigin.x = 0; // Left-align font field.
- newOrigin.y += [[field font] descender] - [[label font] descender];
- return newOrigin;
-}
-
-// This will set the font on |field| to be |font|, and will set the string
-// value to something human-readable.
-- (void)updateDisplayField:(NSTextField*)field
- withFont:(NSFont*)font
- withLabel:(NSTextField*)label {
- if (!font) {
- // Something has gone really wrong. Don't make things worse by showing the
- // user "(null)".
- return;
- }
- [field setFont:font];
- NSString* value =
- [NSString stringWithFormat:@"%@, %g", [font fontName], [font pointSize]];
- [field setStringValue:value];
- [field setFrameOrigin:[self getFontFieldOrigin:field forLabel:label]];
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698