Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/cocoa/infobars/translate_infobar_base.h" | 5 #import "chrome/browser/ui/cocoa/infobars/translate_infobar_base.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/sys_string_conversions.h" | 9 #include "base/sys_string_conversions.h" |
| 10 #include "chrome/app/chrome_command_ids.h" | 10 #include "chrome/app/chrome_command_ids.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 94 - (void)populateLanguageMenus; | 94 - (void)populateLanguageMenus; |
| 95 | 95 |
| 96 @end | 96 @end |
| 97 | 97 |
| 98 #pragma mark TranslateInfoBarController class | 98 #pragma mark TranslateInfoBarController class |
| 99 | 99 |
| 100 @implementation TranslateInfoBarControllerBase | 100 @implementation TranslateInfoBarControllerBase |
| 101 | 101 |
| 102 - (id)initWithDelegate:(InfoBarDelegate*)delegate | 102 - (id)initWithDelegate:(InfoBarDelegate*)delegate |
| 103 owner:(InfoBarService*)owner { | 103 owner:(InfoBarService*)owner { |
| 104 if ((self = [super initWithDelegate:delegate owner:owner])) { | 104 [super initWithDelegate:delegate owner:owner]; |
|
Peter Kasting
2012/09/19 00:42:02
Can we just get rid of this function entirely or s
sail
2012/09/19 02:13:31
Yep!
Peter Kasting
2012/09/19 02:37:26
OK, done.
| |
| 105 originalLanguageMenuModel_.reset( | |
| 106 new LanguagesMenuModel([self delegate], | |
| 107 LanguagesMenuModel::ORIGINAL)); | |
| 108 | |
| 109 targetLanguageMenuModel_.reset( | |
| 110 new LanguagesMenuModel([self delegate], | |
| 111 LanguagesMenuModel::TARGET)); | |
| 112 } | |
| 113 return self; | 105 return self; |
| 114 } | 106 } |
| 115 | 107 |
| 116 - (TranslateInfoBarDelegate*)delegate { | 108 - (TranslateInfoBarDelegate*)delegate { |
| 117 return reinterpret_cast<TranslateInfoBarDelegate*>(delegate_); | 109 return reinterpret_cast<TranslateInfoBarDelegate*>(delegate_); |
| 118 } | 110 } |
| 119 | 111 |
| 120 - (void)constructViews { | 112 - (void)constructViews { |
| 121 // Using a zero or very large frame causes GTMUILocalizerAndLayoutTweaker | 113 // Using a zero or very large frame causes GTMUILocalizerAndLayoutTweaker |
| 122 // to not resize the view properly so we take the bounds of the first label | 114 // to not resize the view properly so we take the bounds of the first label |
| 123 // which is contained in the nib. | 115 // which is contained in the nib. |
| 124 NSRect bogusFrame = [label_ frame]; | 116 NSRect bogusFrame = [label_ frame]; |
| 125 label1_.reset(CreateLabel(bogusFrame)); | 117 label1_.reset(CreateLabel(bogusFrame)); |
| 126 label2_.reset(CreateLabel(bogusFrame)); | 118 label2_.reset(CreateLabel(bogusFrame)); |
| 127 label3_.reset(CreateLabel(bogusFrame)); | 119 label3_.reset(CreateLabel(bogusFrame)); |
| 128 | 120 |
| 129 optionsPopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame | 121 optionsPopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame |
| 130 pullsDown:YES]); | 122 pullsDown:YES]); |
| 131 fromLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame | 123 fromLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame |
| 132 pullsDown:NO]); | 124 pullsDown:NO]); |
| 133 toLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame | 125 toLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame |
| 134 pullsDown:NO]); | 126 pullsDown:NO]); |
| 135 showOriginalButton_.reset([[NSButton alloc] init]); | 127 showOriginalButton_.reset([[NSButton alloc] init]); |
| 136 translateMessageButton_.reset([[NSButton alloc] init]); | 128 translateMessageButton_.reset([[NSButton alloc] init]); |
| 137 } | 129 } |
| 138 | 130 |
| 139 - (void)sourceLanguageModified:(NSInteger)newLanguageIdx { | 131 - (void)sourceLanguageModified:(NSInteger)newLanguageIdx { |
| 140 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx); | 132 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx); |
| 141 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT); | 133 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT); |
| 142 if (newLanguageIdxSizeT == [self delegate]->original_language_index()) | 134 if (newLanguageIdxSizeT == [self delegate]->original_language_index()) |
| 143 return; | 135 return; |
| 144 [self delegate]->SetOriginalLanguage(newLanguageIdxSizeT); | 136 [self delegate]->set_original_language_index(newLanguageIdxSizeT); |
| 137 if ([self delegate]->type() == TranslateInfoBarDelegate::AFTER_TRANSLATE) | |
| 138 [self delegate]->Translate(); | |
| 145 int commandId = IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE + newLanguageIdx; | 139 int commandId = IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE + newLanguageIdx; |
| 146 int newMenuIdx = [fromLanguagePopUp_ indexOfItemWithTag:commandId]; | 140 int newMenuIdx = [fromLanguagePopUp_ indexOfItemWithTag:commandId]; |
| 147 [fromLanguagePopUp_ selectItemAtIndex:newMenuIdx]; | 141 [fromLanguagePopUp_ selectItemAtIndex:newMenuIdx]; |
| 148 } | 142 } |
| 149 | 143 |
| 150 - (void)targetLanguageModified:(NSInteger)newLanguageIdx { | 144 - (void)targetLanguageModified:(NSInteger)newLanguageIdx { |
| 151 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx); | 145 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx); |
| 152 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT); | 146 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT); |
| 153 if (newLanguageIdxSizeT == [self delegate]->target_language_index()) | 147 if (newLanguageIdxSizeT == [self delegate]->target_language_index()) |
| 154 return; | 148 return; |
| 155 [self delegate]->SetTargetLanguage(newLanguageIdxSizeT); | 149 [self delegate]->set_target_language_index(newLanguageIdxSizeT); |
| 150 if ([self delegate]->type() == TranslateInfoBarDelegate::AFTER_TRANSLATE) | |
| 151 [self delegate]->Translate(); | |
| 156 int commandId = IDC_TRANSLATE_TARGET_LANGUAGE_BASE + newLanguageIdx; | 152 int commandId = IDC_TRANSLATE_TARGET_LANGUAGE_BASE + newLanguageIdx; |
| 157 int newMenuIdx = [toLanguagePopUp_ indexOfItemWithTag:commandId]; | 153 int newMenuIdx = [toLanguagePopUp_ indexOfItemWithTag:commandId]; |
| 158 [toLanguagePopUp_ selectItemAtIndex:newMenuIdx]; | 154 [toLanguagePopUp_ selectItemAtIndex:newMenuIdx]; |
| 159 } | 155 } |
| 160 | 156 |
| 161 - (void)loadLabelText { | 157 - (void)loadLabelText { |
| 162 // Do nothing by default, should be implemented by subclasses. | 158 // Do nothing by default, should be implemented by subclasses. |
| 163 } | 159 } |
| 164 | 160 |
| 165 - (void)updateState { | 161 - (void)updateState { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 234 [optionsPopUp_ removeAllItems]; | 230 [optionsPopUp_ removeAllItems]; |
| 235 // Set title. | 231 // Set title. |
| 236 NSString* optionsLabel = hideTitle ? @"" : | 232 NSString* optionsLabel = hideTitle ? @"" : |
| 237 l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_OPTIONS); | 233 l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_OPTIONS); |
| 238 [optionsPopUp_ addItemWithTitle:optionsLabel]; | 234 [optionsPopUp_ addItemWithTitle:optionsLabel]; |
| 239 | 235 |
| 240 // Populate options menu. | 236 // Populate options menu. |
| 241 NSMenu* optionsMenu = [optionsPopUp_ menu]; | 237 NSMenu* optionsMenu = [optionsPopUp_ menu]; |
| 242 [optionsMenu setAutoenablesItems:NO]; | 238 [optionsMenu setAutoenablesItems:NO]; |
| 243 for (int i = 0; i < optionsMenuModel_->GetItemCount(); ++i) { | 239 for (int i = 0; i < optionsMenuModel_->GetItemCount(); ++i) { |
| 244 NSString* title = base::SysUTF16ToNSString( | |
| 245 optionsMenuModel_->GetLabelAt(i)); | |
| 246 int cmd = optionsMenuModel_->GetCommandIdAt(i); | |
| 247 bool checked = optionsMenuModel_->IsItemCheckedAt(i); | |
| 248 bool enabled = optionsMenuModel_->IsEnabledAt(i); | |
| 249 AddMenuItem(optionsMenu, | 240 AddMenuItem(optionsMenu, |
| 250 self, | 241 self, |
| 251 @selector(optionsMenuChanged:), | 242 @selector(optionsMenuChanged:), |
| 252 title, | 243 base::SysUTF16ToNSString(optionsMenuModel_->GetLabelAt(i)), |
| 253 cmd, | 244 optionsMenuModel_->GetCommandIdAt(i), |
| 254 enabled, | 245 optionsMenuModel_->IsEnabledAt(i), |
| 255 checked); | 246 optionsMenuModel_->IsItemCheckedAt(i)); |
| 256 } | 247 } |
| 257 } | 248 } |
| 258 | 249 |
| 259 - (BOOL)shouldShowOptionsPopUp { | 250 - (BOOL)shouldShowOptionsPopUp { |
| 260 return YES; | 251 return YES; |
| 261 } | 252 } |
| 262 | 253 |
| 263 - (void)populateLanguageMenus { | 254 - (void)populateLanguageMenus { |
| 264 NSMenu* originalLanguageMenu = [fromLanguagePopUp_ menu]; | 255 NSMenu* originalLanguageMenu = [fromLanguagePopUp_ menu]; |
| 265 [originalLanguageMenu setAutoenablesItems:NO]; | 256 [originalLanguageMenu setAutoenablesItems:NO]; |
| 266 int selectedMenuIndex = 0; | 257 NSMenu* targetLanguageMenu = [toLanguagePopUp_ menu]; |
| 267 int selectedLangIndex = | 258 [targetLanguageMenu setAutoenablesItems:NO]; |
| 268 static_cast<int>([self delegate]->original_language_index()); | 259 for (size_t i = 0; i < [self delegate]->num_languages(); ++i) { |
| 269 for (int i = 0; i < originalLanguageMenuModel_->GetItemCount(); ++i) { | 260 NSString* title = |
| 270 NSString* title = base::SysUTF16ToNSString( | 261 base::SysUTF16ToNSString([self delegate]->language_name_at(i)); |
| 271 originalLanguageMenuModel_->GetLabelAt(i)); | |
| 272 int cmd = originalLanguageMenuModel_->GetCommandIdAt(i); | |
| 273 bool checked = (cmd == selectedLangIndex); | |
| 274 if (checked) | |
| 275 selectedMenuIndex = i; | |
| 276 bool enabled = originalLanguageMenuModel_->IsEnabledAt(i); | |
| 277 cmd += IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE; | |
| 278 AddMenuItem(originalLanguageMenu, | 262 AddMenuItem(originalLanguageMenu, |
| 279 self, | 263 self, |
| 280 @selector(languageMenuChanged:), | 264 @selector(languageMenuChanged:), |
| 281 title, | 265 title, |
| 282 cmd, | 266 IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE + i, |
| 283 enabled, | 267 i != [self delegate]->target_language_index(), |
| 284 checked); | 268 i == [self delegate]->original_language_index()); |
| 285 } | |
| 286 [fromLanguagePopUp_ selectItemAtIndex:selectedMenuIndex]; | |
| 287 | |
| 288 NSMenu* targetLanguageMenu = [toLanguagePopUp_ menu]; | |
| 289 [targetLanguageMenu setAutoenablesItems:NO]; | |
| 290 selectedLangIndex = | |
| 291 static_cast<int>([self delegate]->target_language_index()); | |
| 292 for (int i = 0; i < targetLanguageMenuModel_->GetItemCount(); ++i) { | |
| 293 NSString* title = base::SysUTF16ToNSString( | |
| 294 targetLanguageMenuModel_->GetLabelAt(i)); | |
| 295 int cmd = targetLanguageMenuModel_->GetCommandIdAt(i); | |
| 296 bool checked = (cmd == selectedLangIndex); | |
| 297 if (checked) | |
| 298 selectedMenuIndex = i; | |
| 299 bool enabled = targetLanguageMenuModel_->IsEnabledAt(i); | |
| 300 cmd += IDC_TRANSLATE_TARGET_LANGUAGE_BASE; | |
| 301 AddMenuItem(targetLanguageMenu, | 269 AddMenuItem(targetLanguageMenu, |
| 302 self, | 270 self, |
| 303 @selector(languageMenuChanged:), | 271 @selector(languageMenuChanged:), |
| 304 title, | 272 title, |
| 305 cmd, | 273 IDC_TRANSLATE_TARGET_LANGUAGE_BASE + i, |
| 306 enabled, | 274 i != [self delegate]->original_language_index(), |
| 307 checked); | 275 i == [self delegate]->target_language_index()); |
| 308 } | 276 } |
| 309 [toLanguagePopUp_ selectItemAtIndex:selectedMenuIndex]; | 277 [fromLanguagePopUp_ |
| 278 selectItemAtIndex:([self delegate]->original_language_index())]; | |
| 279 [toLanguagePopUp_ | |
| 280 selectItemAtIndex:([self delegate]->target_language_index())]; | |
| 310 } | 281 } |
| 311 | 282 |
| 312 - (void)addAdditionalControls { | 283 - (void)addAdditionalControls { |
| 313 using l10n_util::GetNSString; | 284 using l10n_util::GetNSString; |
| 314 using l10n_util::GetNSStringWithFixup; | 285 using l10n_util::GetNSStringWithFixup; |
| 315 | 286 |
| 316 // Get layout information from the NIB. | 287 // Get layout information from the NIB. |
| 317 NSRect okButtonFrame = [okButton_ frame]; | 288 NSRect okButtonFrame = [okButton_ frame]; |
| 318 NSRect cancelButtonFrame = [cancelButton_ frame]; | 289 NSRect cancelButtonFrame = [cancelButton_ frame]; |
| 319 | 290 |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 575 [[control description] UTF8String] <<[title UTF8String]; | 546 [[control description] UTF8String] <<[title UTF8String]; |
| 576 return false; | 547 return false; |
| 577 } | 548 } |
| 578 previousControl = control; | 549 previousControl = control; |
| 579 } | 550 } |
| 580 | 551 |
| 581 return true; | 552 return true; |
| 582 } | 553 } |
| 583 | 554 |
| 584 @end // TranslateInfoBarControllerBase (TestingAPI) | 555 @end // TranslateInfoBarControllerBase (TestingAPI) |
| OLD | NEW |