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

Side by Side Diff: chrome/browser/ui/cocoa/infobars/translate_infobar_base.mm

Issue 10952016: Simplify the translate infobar code some. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698