| Index: chrome/browser/ui/cocoa/import_settings_dialog.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/import_settings_dialog.mm (revision 71671)
|
| +++ chrome/browser/ui/cocoa/import_settings_dialog.mm (working copy)
|
| @@ -1,245 +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/import_settings_dialog.h"
|
| -
|
| -#include "base/mac/mac_util.h"
|
| -#include "base/sys_string_conversions.h"
|
| -#include "chrome/browser/importer/importer_data_types.h"
|
| -#include "chrome/browser/importer/importer_list.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -
|
| -namespace {
|
| -
|
| -bool importSettingsDialogVisible = false;
|
| -
|
| -} // namespace
|
| -
|
| -@interface ImportSettingsDialogController ()
|
| -
|
| -@property(assign, readwrite, nonatomic) BOOL historyAvailable;
|
| -@property(assign, readwrite, nonatomic) BOOL favoritesAvailable;
|
| -@property(assign, readwrite, nonatomic) BOOL passwordsAvailable;
|
| -@property(assign, readwrite, nonatomic) BOOL searchEnginesAvailable;
|
| -
|
| -@end
|
| -
|
| -@implementation ImportSettingsProfile
|
| -
|
| -@synthesize browserName = browserName_;
|
| -@synthesize services = services_;
|
| -
|
| -+ (id)importSettingsProfileWithBrowserName:(NSString*)browserName
|
| - services:(uint16)services {
|
| - id settingsProfile = [[[ImportSettingsProfile alloc]
|
| - initWithBrowserName:browserName
|
| - services:services] autorelease];
|
| - return settingsProfile;
|
| -}
|
| -
|
| -- (id)initWithBrowserName:(NSString*)browserName
|
| - services:(uint16)services {
|
| - DCHECK(browserName && services);
|
| - if ((self = [super init])) {
|
| - if (browserName && services != 0) {
|
| - browserName_ = [browserName retain];
|
| - services_ = services;
|
| - } else {
|
| - [self release];
|
| - self = nil;
|
| - }
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (id)init {
|
| - NOTREACHED(); // Should never be called.
|
| - return [self initWithBrowserName:NULL services:0];
|
| -}
|
| -
|
| -- (void)dealloc {
|
| - [browserName_ release];
|
| - [super dealloc];
|
| -}
|
| -
|
| -@end
|
| -
|
| -@interface ImportSettingsDialogController (Private)
|
| -
|
| -// Initialize the dialog controller with either the default profile or
|
| -// the profile for the current browser.
|
| -- (id)initWithProfile:(Profile*)profile;
|
| -
|
| -// Present the app modal dialog.
|
| -- (void)runModalDialog;
|
| -
|
| -// Close the modal dialog.
|
| -- (void)closeDialog;
|
| -
|
| -@end
|
| -
|
| -@implementation ImportSettingsDialogController
|
| -
|
| -@synthesize sourceBrowserIndex = sourceBrowserIndex_;
|
| -@synthesize importHistory = importHistory_;
|
| -@synthesize importFavorites = importFavorites_;
|
| -@synthesize importPasswords = importPasswords_;
|
| -@synthesize importSearchEngines = importSearchEngines_;
|
| -@synthesize historyAvailable = historyAvailable_;
|
| -@synthesize favoritesAvailable = favoritesAvailable_;
|
| -@synthesize passwordsAvailable = passwordsAvailable_;
|
| -@synthesize searchEnginesAvailable = searchEnginesAvailable_;
|
| -
|
| -// Set bindings dependencies for importSomething property.
|
| -+ (NSSet*)keyPathsForValuesAffectingImportSomething {
|
| - return [NSSet setWithObjects:@"importHistory", @"importFavorites",
|
| - @"importPasswords", @"importSearchEngines", nil];
|
| -}
|
| -
|
| -+ (void)showImportSettingsDialogForProfile:(Profile*)profile {
|
| - // Don't display if already visible.
|
| - if (importSettingsDialogVisible)
|
| - return;
|
| - ImportSettingsDialogController* controller =
|
| - [[ImportSettingsDialogController alloc] initWithProfile:profile];
|
| - [controller runModalDialog];
|
| -}
|
| -
|
| -- (id)initWithProfile:(Profile*)profile {
|
| - // Collect profile information (profile name and the services which can
|
| - // be imported from each) into an array of ImportSettingsProfile which
|
| - // are bound to the Browser List array controller and the popup name
|
| - // presentation. The services element is used to indirectly control
|
| - // checkbox enabling.
|
| - importerList_ = new ImporterList;
|
| - ImporterList& importerList(*(importerList_.get()));
|
| - importerList.DetectSourceProfilesHack();
|
| - int profilesCount = importerList.GetAvailableProfileCount();
|
| - // There shoule be at least the default profile so this should never be zero.
|
| - DCHECK(profilesCount > 0);
|
| - NSMutableArray* browserProfiles =
|
| - [NSMutableArray arrayWithCapacity:profilesCount];
|
| - for (int i = 0; i < profilesCount; ++i) {
|
| - const importer::ProfileInfo& sourceProfile =
|
| - importerList.GetSourceProfileInfoAt(i);
|
| - NSString* browserName =
|
| - base::SysWideToNSString(sourceProfile.description);
|
| - uint16 browserServices = sourceProfile.services_supported;
|
| - ImportSettingsProfile* settingsProfile =
|
| - [ImportSettingsProfile
|
| - importSettingsProfileWithBrowserName:browserName
|
| - services:browserServices];
|
| - [browserProfiles addObject:settingsProfile];
|
| - }
|
| - if ((self = [self initWithProfiles:browserProfiles])) {
|
| - profile_ = profile;
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (id)initWithProfiles:(NSArray*)profiles {
|
| - NSString* nibpath =
|
| - [base::mac::MainAppBundle() pathForResource:@"ImportSettingsDialog"
|
| - ofType:@"nib"];
|
| - if ((self = [super initWithWindowNibPath:nibpath owner:self])) {
|
| - sourceBrowsersList_.reset([profiles retain]);
|
| - // Create and initialize an importerList_ when running unit tests.
|
| - if (!importerList_.get()) {
|
| - importerList_ = new ImporterList;
|
| - ImporterList& importerList(*(importerList_.get()));
|
| - importerList.DetectSourceProfilesHack();
|
| - }
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (id)init {
|
| - return [self initWithProfile:NULL];
|
| -}
|
| -
|
| -- (void)awakeFromNib {
|
| - // Force an update of the checkbox enabled states.
|
| - [self setSourceBrowserIndex:0];
|
| -}
|
| -
|
| -// Run application modal.
|
| -- (void)runModalDialog {
|
| - importSettingsDialogVisible = true;
|
| - [NSApp runModalForWindow:[self window]];
|
| -}
|
| -
|
| -- (IBAction)ok:(id)sender {
|
| - [self closeDialog];
|
| - const importer::ProfileInfo& sourceProfile =
|
| - importerList_.get()->GetSourceProfileInfoAt([self sourceBrowserIndex]);
|
| - uint16 items = sourceProfile.services_supported;
|
| - uint16 servicesToImport = items & [self servicesToImport];
|
| - if (servicesToImport) {
|
| - if (profile_) {
|
| - ImporterHost* importerHost = new ExternalProcessImporterHost;
|
| - // Note that a side effect of the following call is to cause the
|
| - // importerHost to be disposed once the import has completed.
|
| - StartImportingWithUI(nil, servicesToImport, importerHost,
|
| - sourceProfile, profile_, nil, false);
|
| - }
|
| - } else {
|
| - LOG(WARNING) << "There were no settings to import from '"
|
| - << sourceProfile.description << "'.";
|
| - }
|
| -}
|
| -
|
| -- (IBAction)cancel:(id)sender {
|
| - [self closeDialog];
|
| -}
|
| -
|
| -- (void)closeDialog {
|
| - importSettingsDialogVisible = false;
|
| - [[self window] orderOut:self];
|
| - [NSApp stopModal];
|
| - [self autorelease];
|
| -}
|
| -
|
| -#pragma mark Accessors
|
| -
|
| -- (NSArray*)sourceBrowsersList {
|
| - return sourceBrowsersList_.get();
|
| -}
|
| -
|
| -// Accessor which cascades selected-browser changes into a re-evaluation of the
|
| -// available services and the associated checkbox enable and checked states.
|
| -- (void)setSourceBrowserIndex:(NSUInteger)browserIndex {
|
| - sourceBrowserIndex_ = browserIndex;
|
| - ImportSettingsProfile* profile =
|
| - [sourceBrowsersList_.get() objectAtIndex:browserIndex];
|
| - uint16 items = [profile services];
|
| - [self setHistoryAvailable:(items & importer::HISTORY) ? YES : NO];
|
| - [self setImportHistory:[self historyAvailable]];
|
| - [self setFavoritesAvailable:(items & importer::FAVORITES) ? YES : NO];
|
| - [self setImportFavorites:[self favoritesAvailable]];
|
| - [self setPasswordsAvailable:(items & importer::PASSWORDS) ? YES : NO];
|
| - [self setImportPasswords:[self passwordsAvailable]];
|
| - [self setSearchEnginesAvailable:(items & importer::SEARCH_ENGINES) ?
|
| - YES : NO];
|
| - [self setImportSearchEngines:[self searchEnginesAvailable]];
|
| -}
|
| -
|
| -- (uint16)servicesToImport {
|
| - uint16 servicesToImport = 0;
|
| - if ([self importHistory]) servicesToImport |= importer::HISTORY;
|
| - if ([self importFavorites]) servicesToImport |= importer::FAVORITES;
|
| - if ([self importPasswords]) servicesToImport |= importer::PASSWORDS;
|
| - if ([self importSearchEngines]) servicesToImport |=
|
| - importer::SEARCH_ENGINES;
|
| - return servicesToImport;
|
| -}
|
| -
|
| -// KVO accessor which returns YES if at least one of the services
|
| -// provided by the selected profile has been marked for importing
|
| -// and bound to the OK button's enable property.
|
| -- (BOOL)importSomething {
|
| - return [self importHistory] || [self importFavorites] ||
|
| - [self importPasswords] || [self importSearchEngines];
|
| -}
|
| -
|
| -@end
|
|
|