OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/cocoa/preferences_window_controller.h" | 5 #import "chrome/browser/cocoa/preferences_window_controller.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "base/mac_util.h" | 8 #include "base/mac_util.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 | 634 |
635 // Called to clear user's browsing data. This puts up an application-modal | 635 // Called to clear user's browsing data. This puts up an application-modal |
636 // dialog to guide the user through clearing the data. | 636 // dialog to guide the user through clearing the data. |
637 - (IBAction)clearData:(id)sender { | 637 - (IBAction)clearData:(id)sender { |
638 scoped_nsobject<ClearBrowsingDataController> controller( | 638 scoped_nsobject<ClearBrowsingDataController> controller( |
639 [[ClearBrowsingDataController alloc] | 639 [[ClearBrowsingDataController alloc] |
640 initWithProfile:profile_]); | 640 initWithProfile:profile_]); |
641 [controller runModalDialog]; | 641 [controller runModalDialog]; |
642 } | 642 } |
643 | 643 |
644 - (NSArray*)availableThemes { | 644 - (IBAction)resetThemeToDefault:(id)sender { |
645 const ExtensionList* extensions = | 645 [self recordUserAction:L"Options_ThemesReset"]; |
646 profile_->GetExtensionsService()->extensions(); | 646 profile_->ClearTheme(); |
647 | |
648 NSMutableArray* themes = [NSMutableArray array]; | |
649 | |
650 for (size_t i = 0; i < extensions->size(); ++i) { | |
651 Extension* extension = extensions->at(i); | |
652 if (!extension->IsTheme()) | |
653 continue; | |
654 | |
655 NSDictionary* theme = | |
656 [NSDictionary dictionaryWithObjectsAndKeys: | |
657 [NSString stringWithUTF8String:extension->name().c_str()], @"name", | |
658 [NSString stringWithUTF8String:extension->id().c_str()], @"id", | |
659 nil]; | |
660 [themes addObject:theme]; | |
661 } | |
662 | |
663 NSSortDescriptor* sortDescriptor = | |
664 [[[NSSortDescriptor alloc] initWithKey:@"name" | |
665 ascending:YES | |
666 selector:@selector(localizedCompare:)] | |
667 autorelease]; | |
668 | |
669 [themes sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; | |
670 | |
671 NSMutableArray* themeNames = [NSMutableArray array]; | |
672 NSMutableArray* themeIds = [NSMutableArray array]; | |
673 | |
674 for (NSDictionary* themeDict in themes) { | |
675 [themeNames addObject:[themeDict objectForKey:@"name"]]; | |
676 [themeIds addObject:[themeDict objectForKey:@"id"]]; | |
677 } | |
678 | |
679 themeMenuOffset_ = 0; | |
680 if ([themeNames count] > 0) { | |
681 [themeNames insertObject:@"-" atIndex:0]; | |
682 ++themeMenuOffset_; | |
683 } | |
684 NSString* defaultLabel = | |
685 [NSString stringWithUTF8String: | |
686 l10n_util::GetStringUTF8(IDS_THEMES_DEFAULT_THEME_LABEL).c_str()]; | |
687 [themeNames insertObject:defaultLabel atIndex:0]; | |
688 ++themeMenuOffset_; | |
689 | |
690 themeIds_.reset([themeIds retain]); | |
691 return themeNames; | |
692 } | |
693 | |
694 - (int)currentTheme { | |
695 const Extension* theme = profile_->GetTheme(); | |
696 | |
697 if (theme) { | |
698 NSString* themeId = [NSString stringWithUTF8String:theme->id().c_str()]; | |
699 return [themeIds_.get() indexOfObject:themeId] + themeMenuOffset_; | |
700 } | |
701 | |
702 return 0; | |
703 } | |
704 | |
705 - (void)setCurrentTheme:(int)newTheme { | |
706 newTheme -= themeMenuOffset_; | |
707 | |
708 if (newTheme < 0) { | |
709 [self recordUserAction:L"Options_ThemesReset"]; | |
710 profile_->ClearTheme(); | |
711 } else { | |
712 NSString* themeId = [themeIds_.get() objectAtIndex:newTheme]; | |
713 Extension* extension = | |
714 profile_->GetExtensionsService()-> | |
715 GetExtensionById([themeId UTF8String]); | |
716 profile_->SetTheme(extension); | |
717 } | |
718 } | 647 } |
719 | 648 |
720 - (IBAction)themesGallery:(id)sender { | 649 - (IBAction)themesGallery:(id)sender { |
721 [self recordUserAction:L"Options_ThemesGallery"]; | 650 [self recordUserAction:L"Options_ThemesGallery"]; |
722 Browser* browser = | 651 Browser* browser = |
723 BrowserList::FindBrowserWithType(profile_, Browser::TYPE_NORMAL); | 652 BrowserList::FindBrowserWithType(profile_, Browser::TYPE_NORMAL); |
724 | 653 |
725 if (!browser || !browser->GetSelectedTabContents()) { | 654 if (!browser || !browser->GetSelectedTabContents()) { |
726 browser = Browser::Create(profile_); | 655 browser = Browser::Create(profile_); |
727 browser->OpenURL( | 656 browser->OpenURL( |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 [[NSNotificationCenter defaultCenter] | 879 [[NSNotificationCenter defaultCenter] |
951 postNotificationName:kUserDoneEditingPrefsNotification | 880 postNotificationName:kUserDoneEditingPrefsNotification |
952 object:self]; | 881 object:self]; |
953 } | 882 } |
954 | 883 |
955 - (void)controlTextDidEndEditing:(NSNotification*)notification { | 884 - (void)controlTextDidEndEditing:(NSNotification*)notification { |
956 [customPagesSource_ validateURLs]; | 885 [customPagesSource_ validateURLs]; |
957 } | 886 } |
958 | 887 |
959 @end | 888 @end |
OLD | NEW |