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

Side by Side Diff: ios/chrome/browser/translate/before_translate_infobar_controller.mm

Issue 1161243002: Fixit: Cleanup of InfoBarController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding mising forward declaration. Created 5 years, 6 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "ios/chrome/browser/translate/before_translate_infobar_controller.h" 5 #include "ios/chrome/browser/translate/before_translate_infobar_controller.h"
6 6
7 #import <UIKit/UIKit.h> 7 #import <UIKit/UIKit.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/sys_string_conversions.h" 10 #include "base/strings/sys_string_conversions.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 // Navigation bar associated with the picker with "Done" and "Cancel" buttons. 117 // Navigation bar associated with the picker with "Done" and "Cancel" buttons.
118 base::scoped_nsobject<UINavigationBar> _navigationBar; 118 base::scoped_nsobject<UINavigationBar> _navigationBar;
119 // The controller of the languagePicker. Needs to be an ivar because 119 // The controller of the languagePicker. Needs to be an ivar because
120 // |_languagePicker| does not retain it. 120 // |_languagePicker| does not retain it.
121 base::scoped_nsobject<LanguagePickerController> _languagePickerController; 121 base::scoped_nsobject<LanguagePickerController> _languagePickerController;
122 } 122 }
123 123
124 #pragma mark - 124 #pragma mark -
125 #pragma mark InfoBarControllerProtocol 125 #pragma mark InfoBarControllerProtocol
126 126
127 - (void)layoutForDelegate:(infobars::InfoBarDelegate*)delegate 127 - (base::scoped_nsobject<UIView<InfoBarViewProtocol>>)
128 frame:(CGRect)frame { 128 viewForDelegate:(infobars::InfoBarDelegate*)delegate
129 frame:(CGRect)frame {
130 base::scoped_nsobject<UIView<InfoBarViewProtocol>> infoBarView;
129 _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); 131 _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate();
130 DCHECK(!infoBarView_); 132 infoBarView.reset(
131 infoBarView_.reset([ios::GetChromeBrowserProvider()->CreateInfoBarView() 133 ios::GetChromeBrowserProvider()->CreateInfoBarView(frame, self.delegate));
132 initWithFrame:frame
133 delegate:delegate_]);
134 // Icon 134 // Icon
135 gfx::Image icon = _translateInfoBarDelegate->GetIcon(); 135 gfx::Image icon = _translateInfoBarDelegate->GetIcon();
136 if (!icon.IsEmpty()) 136 if (!icon.IsEmpty())
137 [infoBarView_ addLeftIcon:icon.ToUIImage()]; 137 [infoBarView addLeftIcon:icon.ToUIImage()];
138 138
139 // Main text. 139 // Main text.
140 [self updateInfobarLabel]; 140 [self updateInfobarLabel];
141 141
142 // Close button. 142 // Close button.
143 [infoBarView_ addCloseButtonWithTag:TranslateInfoBarIOSTag::BEFORE_DENY 143 [infoBarView addCloseButtonWithTag:TranslateInfoBarIOSTag::BEFORE_DENY
144 target:self 144 target:self
145 action:@selector(infoBarButtonDidPress:)]; 145 action:@selector(infoBarButtonDidPress:)];
146 // Other buttons. 146 // Other buttons.
147 NSString* buttonAccept = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_ACCEPT); 147 NSString* buttonAccept = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_ACCEPT);
148 NSString* buttonDeny = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_DENY); 148 NSString* buttonDeny = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_DENY);
149 [infoBarView_ addButton1:buttonAccept 149 [infoBarView addButton1:buttonAccept
150 tag1:TranslateInfoBarIOSTag::BEFORE_ACCEPT 150 tag1:TranslateInfoBarIOSTag::BEFORE_ACCEPT
151 button2:buttonDeny 151 button2:buttonDeny
152 tag2:TranslateInfoBarIOSTag::BEFORE_DENY 152 tag2:TranslateInfoBarIOSTag::BEFORE_DENY
153 target:self 153 target:self
154 action:@selector(infoBarButtonDidPress:)]; 154 action:@selector(infoBarButtonDidPress:)];
155 return infoBarView;
155 } 156 }
156 157
157 - (void)updateInfobarLabel { 158 - (void)updateInfobarLabel {
158 NSString* originalLanguage = 159 NSString* originalLanguage =
159 base::SysUTF16ToNSString(_translateInfoBarDelegate->language_name_at( 160 base::SysUTF16ToNSString(_translateInfoBarDelegate->language_name_at(
160 _translateInfoBarDelegate->original_language_index())); 161 _translateInfoBarDelegate->original_language_index()));
161 NSString* targetLanguage = 162 NSString* targetLanguage =
162 base::SysUTF16ToNSString(_translateInfoBarDelegate->language_name_at( 163 base::SysUTF16ToNSString(_translateInfoBarDelegate->language_name_at(
163 _translateInfoBarDelegate->target_language_index())); 164 _translateInfoBarDelegate->target_language_index()));
164 base::string16 originalLanguageWithLink = 165 base::string16 originalLanguageWithLink =
165 base::SysNSStringToUTF16([[infoBarView_ class] 166 base::SysNSStringToUTF16([[self.view class]
166 stringAsLink:originalLanguage 167 stringAsLink:originalLanguage
167 tag:TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE]); 168 tag:TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE]);
168 base::string16 targetLanguageWithLink = 169 base::string16 targetLanguageWithLink =
169 base::SysNSStringToUTF16([[infoBarView_ class] 170 base::SysNSStringToUTF16([[self.view class]
170 stringAsLink:targetLanguage 171 stringAsLink:targetLanguage
171 tag:TranslateInfoBarIOSTag::BEFORE_TARGET_LANGUAGE]); 172 tag:TranslateInfoBarIOSTag::BEFORE_TARGET_LANGUAGE]);
172 NSString* label = 173 NSString* label =
173 l10n_util::GetNSStringF(IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_IOS, 174 l10n_util::GetNSStringF(IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_IOS,
174 originalLanguageWithLink, targetLanguageWithLink); 175 originalLanguageWithLink, targetLanguageWithLink);
175 [infoBarView_ addLabel:label 176 [self.view addLabel:label target:self action:@selector(infobarLinkDidPress:)];
176 target:self
177 action:@selector(infobarLinkDidPress:)];
178 } 177 }
179 178
180 - (void)languageSelectionDone { 179 - (void)languageSelectionDone {
181 size_t selectedRow = [_languagePicker selectedRowInComponent:0]; 180 size_t selectedRow = [_languagePicker selectedRowInComponent:0];
182 if (_languageSelectionType == 181 if (_languageSelectionType ==
183 TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE && 182 TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE &&
184 selectedRow != _translateInfoBarDelegate->target_language_index()) { 183 selectedRow != _translateInfoBarDelegate->target_language_index()) {
185 _translateInfoBarDelegate->UpdateOriginalLanguageIndex(selectedRow); 184 _translateInfoBarDelegate->UpdateOriginalLanguageIndex(selectedRow);
186 } 185 }
187 if (_languageSelectionType == 186 if (_languageSelectionType ==
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 animations:animations 228 animations:animations
230 completion:completion]; 229 completion:completion];
231 } 230 }
232 231
233 #pragma mark - Handling of User Events 232 #pragma mark - Handling of User Events
234 233
235 - (void)infoBarButtonDidPress:(id)sender { 234 - (void)infoBarButtonDidPress:(id)sender {
236 // This press might have occurred after the user has already pressed a button, 235 // This press might have occurred after the user has already pressed a button,
237 // in which case the view has been detached from the delegate and this press 236 // in which case the view has been detached from the delegate and this press
238 // should be ignored. 237 // should be ignored.
239 if (!delegate_) { 238 if (!self.delegate) {
240 return; 239 return;
241 } 240 }
242 if ([sender isKindOfClass:[UIButton class]]) { 241 if ([sender isKindOfClass:[UIButton class]]) {
243 NSUInteger buttonId = static_cast<UIButton*>(sender).tag; 242 NSUInteger buttonId = static_cast<UIButton*>(sender).tag;
244 DCHECK(buttonId == TranslateInfoBarIOSTag::BEFORE_ACCEPT || 243 DCHECK(buttonId == TranslateInfoBarIOSTag::BEFORE_ACCEPT ||
245 buttonId == TranslateInfoBarIOSTag::BEFORE_DENY); 244 buttonId == TranslateInfoBarIOSTag::BEFORE_DENY);
246 delegate_->InfoBarButtonDidPress(buttonId); 245 self.delegate->InfoBarButtonDidPress(buttonId);
247 } 246 }
248 } 247 }
249 248
250 - (void)infobarLinkDidPress:(NSNumber*)tag { 249 - (void)infobarLinkDidPress:(NSNumber*)tag {
251 DCHECK([tag isKindOfClass:[NSNumber class]]); 250 DCHECK([tag isKindOfClass:[NSNumber class]]);
252 _languageSelectionType = [tag unsignedIntegerValue]; 251 _languageSelectionType = [tag unsignedIntegerValue];
253 DCHECK(_languageSelectionType == 252 DCHECK(_languageSelectionType ==
254 TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE || 253 TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE ||
255 _languageSelectionType == 254 _languageSelectionType ==
256 TranslateInfoBarIOSTag::BEFORE_TARGET_LANGUAGE); 255 TranslateInfoBarIOSTag::BEFORE_TARGET_LANGUAGE);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 initWithDelegate:_translateInfoBarDelegate 321 initWithDelegate:_translateInfoBarDelegate
323 initialRow:selectedRow 322 initialRow:selectedRow
324 disabledRow:disabledRow]); 323 disabledRow:disabledRow]);
325 _languagePicker.reset( 324 _languagePicker.reset(
326 [[UIPickerView alloc] initWithFrame:initialPickerFrame]); 325 [[UIPickerView alloc] initWithFrame:initialPickerFrame]);
327 [_languagePicker setAutoresizingMask:resizingMask]; 326 [_languagePicker setAutoresizingMask:resizingMask];
328 [_languagePicker setShowsSelectionIndicator:YES]; 327 [_languagePicker setShowsSelectionIndicator:YES];
329 [_languagePicker setDataSource:_languagePickerController]; 328 [_languagePicker setDataSource:_languagePickerController];
330 [_languagePicker setDelegate:_languagePickerController]; 329 [_languagePicker setDelegate:_languagePickerController];
331 [_languagePicker setShowsSelectionIndicator:YES]; 330 [_languagePicker setShowsSelectionIndicator:YES];
332 [_languagePicker setBackgroundColor:[infoBarView_ backgroundColor]]; 331 [_languagePicker setBackgroundColor:[self.view backgroundColor]];
333 [_languagePicker selectRow:selectedRow inComponent:0 animated:NO]; 332 [_languagePicker selectRow:selectedRow inComponent:0 animated:NO];
334 333
335 auto blockLanguagePicker(_languagePicker); 334 auto blockLanguagePicker(_languagePicker);
336 auto blockNavigationBar(_navigationBar); 335 auto blockNavigationBar(_navigationBar);
337 [UIView animateWithDuration:kPickerAnimationDurationInSeconds 336 [UIView animateWithDuration:kPickerAnimationDurationInSeconds
338 animations:^{ 337 animations:^{
339 blockLanguagePicker.get().frame = finalPickerFrame; 338 blockLanguagePicker.get().frame = finalPickerFrame;
340 blockNavigationBar.get().frame = finalNavigationBarFrame; 339 blockNavigationBar.get().frame = finalNavigationBarFrame;
341 }]; 340 }];
342 341
343 // Add the subviews. 342 // Add the subviews.
344 [_languageSelectionView addSubview:_languagePicker]; 343 [_languageSelectionView addSubview:_languagePicker];
345 [_languageSelectionView addSubview:_navigationBar]; 344 [_languageSelectionView addSubview:_navigationBar];
346 } 345 }
347 346
348 - (void)removeView { 347 - (void)removeView {
349 [super removeView]; 348 [super removeView];
350 [self dismissLanguageSelectionView]; 349 [self dismissLanguageSelectionView];
351 } 350 }
352 351
353 - (void)detachView { 352 - (void)detachView {
354 [super detachView]; 353 [super detachView];
355 [self dismissLanguageSelectionView]; 354 [self dismissLanguageSelectionView];
356 } 355 }
357 356
358 @end 357 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698