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

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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 // Completely rebuild "from" and "to" language menus from the data model. 93 // Completely rebuild "from" and "to" language menus from the data model.
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
103 owner:(InfoBarService*)owner {
104 if ((self = [super initWithDelegate:delegate owner:owner])) {
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;
114 }
115
116 - (TranslateInfoBarDelegate*)delegate { 102 - (TranslateInfoBarDelegate*)delegate {
117 return reinterpret_cast<TranslateInfoBarDelegate*>(delegate_); 103 return reinterpret_cast<TranslateInfoBarDelegate*>(delegate_);
118 } 104 }
119 105
120 - (void)constructViews { 106 - (void)constructViews {
121 // Using a zero or very large frame causes GTMUILocalizerAndLayoutTweaker 107 // 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 108 // to not resize the view properly so we take the bounds of the first label
123 // which is contained in the nib. 109 // which is contained in the nib.
124 NSRect bogusFrame = [label_ frame]; 110 NSRect bogusFrame = [label_ frame];
125 label1_.reset(CreateLabel(bogusFrame)); 111 label1_.reset(CreateLabel(bogusFrame));
126 label2_.reset(CreateLabel(bogusFrame)); 112 label2_.reset(CreateLabel(bogusFrame));
127 label3_.reset(CreateLabel(bogusFrame)); 113 label3_.reset(CreateLabel(bogusFrame));
128 114
129 optionsPopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame 115 optionsPopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame
130 pullsDown:YES]); 116 pullsDown:YES]);
131 fromLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame 117 fromLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame
132 pullsDown:NO]); 118 pullsDown:NO]);
133 toLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame 119 toLanguagePopUp_.reset([[NSPopUpButton alloc] initWithFrame:bogusFrame
134 pullsDown:NO]); 120 pullsDown:NO]);
135 showOriginalButton_.reset([[NSButton alloc] init]); 121 showOriginalButton_.reset([[NSButton alloc] init]);
136 translateMessageButton_.reset([[NSButton alloc] init]); 122 translateMessageButton_.reset([[NSButton alloc] init]);
137 } 123 }
138 124
139 - (void)sourceLanguageModified:(NSInteger)newLanguageIdx { 125 - (void)sourceLanguageModified:(NSInteger)newLanguageIdx {
140 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx); 126 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx);
141 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT); 127 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT);
142 if (newLanguageIdxSizeT == [self delegate]->original_language_index()) 128 if (newLanguageIdxSizeT == [self delegate]->original_language_index())
143 return; 129 return;
144 [self delegate]->SetOriginalLanguage(newLanguageIdxSizeT); 130 [self delegate]->set_original_language_index(newLanguageIdxSizeT);
131 if ([self delegate]->type() == TranslateInfoBarDelegate::AFTER_TRANSLATE)
132 [self delegate]->Translate();
145 int commandId = IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE + newLanguageIdx; 133 int commandId = IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE + newLanguageIdx;
146 int newMenuIdx = [fromLanguagePopUp_ indexOfItemWithTag:commandId]; 134 int newMenuIdx = [fromLanguagePopUp_ indexOfItemWithTag:commandId];
147 [fromLanguagePopUp_ selectItemAtIndex:newMenuIdx]; 135 [fromLanguagePopUp_ selectItemAtIndex:newMenuIdx];
148 } 136 }
149 137
150 - (void)targetLanguageModified:(NSInteger)newLanguageIdx { 138 - (void)targetLanguageModified:(NSInteger)newLanguageIdx {
151 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx); 139 size_t newLanguageIdxSizeT = static_cast<size_t>(newLanguageIdx);
152 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT); 140 DCHECK_NE(TranslateInfoBarDelegate::kNoIndex, newLanguageIdxSizeT);
153 if (newLanguageIdxSizeT == [self delegate]->target_language_index()) 141 if (newLanguageIdxSizeT == [self delegate]->target_language_index())
154 return; 142 return;
155 [self delegate]->SetTargetLanguage(newLanguageIdxSizeT); 143 [self delegate]->set_target_language_index(newLanguageIdxSizeT);
144 if ([self delegate]->type() == TranslateInfoBarDelegate::AFTER_TRANSLATE)
145 [self delegate]->Translate();
156 int commandId = IDC_TRANSLATE_TARGET_LANGUAGE_BASE + newLanguageIdx; 146 int commandId = IDC_TRANSLATE_TARGET_LANGUAGE_BASE + newLanguageIdx;
157 int newMenuIdx = [toLanguagePopUp_ indexOfItemWithTag:commandId]; 147 int newMenuIdx = [toLanguagePopUp_ indexOfItemWithTag:commandId];
158 [toLanguagePopUp_ selectItemAtIndex:newMenuIdx]; 148 [toLanguagePopUp_ selectItemAtIndex:newMenuIdx];
159 } 149 }
160 150
161 - (void)loadLabelText { 151 - (void)loadLabelText {
162 // Do nothing by default, should be implemented by subclasses. 152 // Do nothing by default, should be implemented by subclasses.
163 } 153 }
164 154
165 - (void)updateState { 155 - (void)updateState {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 [optionsPopUp_ removeAllItems]; 224 [optionsPopUp_ removeAllItems];
235 // Set title. 225 // Set title.
236 NSString* optionsLabel = hideTitle ? @"" : 226 NSString* optionsLabel = hideTitle ? @"" :
237 l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_OPTIONS); 227 l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_OPTIONS);
238 [optionsPopUp_ addItemWithTitle:optionsLabel]; 228 [optionsPopUp_ addItemWithTitle:optionsLabel];
239 229
240 // Populate options menu. 230 // Populate options menu.
241 NSMenu* optionsMenu = [optionsPopUp_ menu]; 231 NSMenu* optionsMenu = [optionsPopUp_ menu];
242 [optionsMenu setAutoenablesItems:NO]; 232 [optionsMenu setAutoenablesItems:NO];
243 for (int i = 0; i < optionsMenuModel_->GetItemCount(); ++i) { 233 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, 234 AddMenuItem(optionsMenu,
250 self, 235 self,
251 @selector(optionsMenuChanged:), 236 @selector(optionsMenuChanged:),
252 title, 237 base::SysUTF16ToNSString(optionsMenuModel_->GetLabelAt(i)),
253 cmd, 238 optionsMenuModel_->GetCommandIdAt(i),
254 enabled, 239 optionsMenuModel_->IsEnabledAt(i),
255 checked); 240 optionsMenuModel_->IsItemCheckedAt(i));
256 } 241 }
257 } 242 }
258 243
259 - (BOOL)shouldShowOptionsPopUp { 244 - (BOOL)shouldShowOptionsPopUp {
260 return YES; 245 return YES;
261 } 246 }
262 247
263 - (void)populateLanguageMenus { 248 - (void)populateLanguageMenus {
264 NSMenu* originalLanguageMenu = [fromLanguagePopUp_ menu]; 249 NSMenu* originalLanguageMenu = [fromLanguagePopUp_ menu];
265 [originalLanguageMenu setAutoenablesItems:NO]; 250 [originalLanguageMenu setAutoenablesItems:NO];
266 int selectedMenuIndex = 0; 251 NSMenu* targetLanguageMenu = [toLanguagePopUp_ menu];
267 int selectedLangIndex = 252 [targetLanguageMenu setAutoenablesItems:NO];
268 static_cast<int>([self delegate]->original_language_index()); 253 for (size_t i = 0; i < [self delegate]->num_languages(); ++i) {
269 for (int i = 0; i < originalLanguageMenuModel_->GetItemCount(); ++i) { 254 NSString* title =
270 NSString* title = base::SysUTF16ToNSString( 255 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, 256 AddMenuItem(originalLanguageMenu,
279 self, 257 self,
280 @selector(languageMenuChanged:), 258 @selector(languageMenuChanged:),
281 title, 259 title,
282 cmd, 260 IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE + i,
283 enabled, 261 i != [self delegate]->target_language_index(),
284 checked); 262 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, 263 AddMenuItem(targetLanguageMenu,
302 self, 264 self,
303 @selector(languageMenuChanged:), 265 @selector(languageMenuChanged:),
304 title, 266 title,
305 cmd, 267 IDC_TRANSLATE_TARGET_LANGUAGE_BASE + i,
306 enabled, 268 i != [self delegate]->original_language_index(),
307 checked); 269 i == [self delegate]->target_language_index());
308 } 270 }
309 [toLanguagePopUp_ selectItemAtIndex:selectedMenuIndex]; 271 [fromLanguagePopUp_
272 selectItemAtIndex:([self delegate]->original_language_index())];
273 [toLanguagePopUp_
274 selectItemAtIndex:([self delegate]->target_language_index())];
310 } 275 }
311 276
312 - (void)addAdditionalControls { 277 - (void)addAdditionalControls {
313 using l10n_util::GetNSString; 278 using l10n_util::GetNSString;
314 using l10n_util::GetNSStringWithFixup; 279 using l10n_util::GetNSStringWithFixup;
315 280
316 // Get layout information from the NIB. 281 // Get layout information from the NIB.
317 NSRect okButtonFrame = [okButton_ frame]; 282 NSRect okButtonFrame = [okButton_ frame];
318 NSRect cancelButtonFrame = [cancelButton_ frame]; 283 NSRect cancelButtonFrame = [cancelButton_ frame];
319 284
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 [[control description] UTF8String] <<[title UTF8String]; 540 [[control description] UTF8String] <<[title UTF8String];
576 return false; 541 return false;
577 } 542 }
578 previousControl = control; 543 previousControl = control;
579 } 544 }
580 545
581 return true; 546 return true;
582 } 547 }
583 548
584 @end // TranslateInfoBarControllerBase (TestingAPI) 549 @end // TranslateInfoBarControllerBase (TestingAPI)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698