OLD | NEW |
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 #include <stddef.h> | 7 #include <stddef.h> |
8 #import <UIKit/UIKit.h> | 8 #import <UIKit/UIKit.h> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/mac/scoped_nsobject.h" | 11 #include "base/mac/scoped_nsobject.h" |
12 #include "base/strings/sys_string_conversions.h" | 12 #include "base/strings/sys_string_conversions.h" |
13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
14 #include "components/strings/grit/components_strings.h" | 14 #include "components/strings/grit/components_strings.h" |
15 #include "components/translate/core/browser/translate_infobar_delegate.h" | 15 #include "components/translate/core/browser/translate_infobar_delegate.h" |
16 #include "ios/chrome/browser/translate/translate_infobar_tags.h" | 16 #include "ios/chrome/browser/translate/translate_infobar_tags.h" |
17 #import "ios/chrome/browser/ui/infobars/infobar_view.h" | 17 #import "ios/chrome/browser/ui/infobars/infobar_view.h" |
18 #import "ios/chrome/browser/ui/infobars/infobar_view_delegate.h" | 18 #import "ios/chrome/browser/ui/infobars/infobar_view_delegate.h" |
19 #import "ios/chrome/browser/ui/infobars/infobar_view_protocol.h" | |
20 #include "ui/base/l10n/l10n_util.h" | 19 #include "ui/base/l10n/l10n_util.h" |
21 #include "ui/gfx/image/image.h" | 20 #include "ui/gfx/image/image.h" |
22 | 21 |
23 namespace { | 22 namespace { |
24 | 23 |
25 CGFloat kNavigationBarHeight = 44; | 24 CGFloat kNavigationBarHeight = 44; |
26 CGFloat kUIPickerHeight = 216; | 25 CGFloat kUIPickerHeight = 216; |
27 CGFloat kUIPickerFontSize = 26; | 26 CGFloat kUIPickerFontSize = 26; |
28 NSTimeInterval kPickerAnimationDurationInSeconds = 0.2; | 27 NSTimeInterval kPickerAnimationDurationInSeconds = 0.2; |
29 | 28 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 | 96 |
98 // Action for any of the user defined buttons. | 97 // Action for any of the user defined buttons. |
99 - (void)infoBarButtonDidPress:(id)sender; | 98 - (void)infoBarButtonDidPress:(id)sender; |
100 // Action for any of the user defined links. | 99 // Action for any of the user defined links. |
101 - (void)infobarLinkDidPress:(NSNumber*)tag; | 100 - (void)infobarLinkDidPress:(NSNumber*)tag; |
102 // Action for the language selection "Done" button. | 101 // Action for the language selection "Done" button. |
103 - (void)languageSelectionDone; | 102 - (void)languageSelectionDone; |
104 // Dismisses the language selection view. | 103 // Dismisses the language selection view. |
105 - (void)dismissLanguageSelectionView; | 104 - (void)dismissLanguageSelectionView; |
106 // Changes the text on the view to match the language. | 105 // Changes the text on the view to match the language. |
107 - (void)updateInfobarLabelOnView:(UIView<InfoBarViewProtocol>*)view; | 106 - (void)updateInfobarLabelOnView:(InfoBarView*)view; |
108 | 107 |
109 @end | 108 @end |
110 | 109 |
111 @implementation BeforeTranslateInfoBarController { | 110 @implementation BeforeTranslateInfoBarController { |
112 translate::TranslateInfoBarDelegate* _translateInfoBarDelegate; // weak | 111 translate::TranslateInfoBarDelegate* _translateInfoBarDelegate; // weak |
113 // A fullscreen view that catches all touch events and contains a UIPickerView | 112 // A fullscreen view that catches all touch events and contains a UIPickerView |
114 // and a UINavigationBar. | 113 // and a UINavigationBar. |
115 base::scoped_nsobject<UIView> _languageSelectionView; | 114 base::scoped_nsobject<UIView> _languageSelectionView; |
116 // Stores whether the user is currently choosing in the UIPickerView the | 115 // Stores whether the user is currently choosing in the UIPickerView the |
117 // original language, or the target language. | 116 // original language, or the target language. |
118 NSUInteger _languageSelectionType; | 117 NSUInteger _languageSelectionType; |
119 // The language picker. | 118 // The language picker. |
120 base::scoped_nsobject<UIPickerView> _languagePicker; | 119 base::scoped_nsobject<UIPickerView> _languagePicker; |
121 // Navigation bar associated with the picker with "Done" and "Cancel" buttons. | 120 // Navigation bar associated with the picker with "Done" and "Cancel" buttons. |
122 base::scoped_nsobject<UINavigationBar> _navigationBar; | 121 base::scoped_nsobject<UINavigationBar> _navigationBar; |
123 // The controller of the languagePicker. Needs to be an ivar because | 122 // The controller of the languagePicker. Needs to be an ivar because |
124 // |_languagePicker| does not retain it. | 123 // |_languagePicker| does not retain it. |
125 base::scoped_nsobject<LanguagePickerController> _languagePickerController; | 124 base::scoped_nsobject<LanguagePickerController> _languagePickerController; |
126 } | 125 } |
127 | 126 |
128 #pragma mark - | 127 #pragma mark - |
129 #pragma mark InfoBarControllerProtocol | 128 #pragma mark InfoBarControllerProtocol |
130 | 129 |
131 - (UIView<InfoBarViewProtocol>*)viewForDelegate: | 130 - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate |
132 (infobars::InfoBarDelegate*)delegate | 131 frame:(CGRect)frame { |
133 frame:(CGRect)frame { | 132 base::scoped_nsobject<InfoBarView> infoBarView; |
134 base::scoped_nsobject<UIView<InfoBarViewProtocol>> infoBarView; | |
135 _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); | 133 _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); |
136 infoBarView.reset( | 134 infoBarView.reset( |
137 [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); | 135 [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); |
138 // Icon | 136 // Icon |
139 gfx::Image icon = _translateInfoBarDelegate->GetIcon(); | 137 gfx::Image icon = _translateInfoBarDelegate->GetIcon(); |
140 if (!icon.IsEmpty()) | 138 if (!icon.IsEmpty()) |
141 [infoBarView addLeftIcon:icon.ToUIImage()]; | 139 [infoBarView addLeftIcon:icon.ToUIImage()]; |
142 | 140 |
143 // Main text. | 141 // Main text. |
144 [self updateInfobarLabelOnView:infoBarView]; | 142 [self updateInfobarLabelOnView:infoBarView]; |
145 | 143 |
146 // Close button. | 144 // Close button. |
147 [infoBarView addCloseButtonWithTag:TranslateInfoBarIOSTag::BEFORE_DENY | 145 [infoBarView addCloseButtonWithTag:TranslateInfoBarIOSTag::BEFORE_DENY |
148 target:self | 146 target:self |
149 action:@selector(infoBarButtonDidPress:)]; | 147 action:@selector(infoBarButtonDidPress:)]; |
150 // Other buttons. | 148 // Other buttons. |
151 NSString* buttonAccept = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_ACCEPT); | 149 NSString* buttonAccept = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_ACCEPT); |
152 NSString* buttonDeny = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_DENY); | 150 NSString* buttonDeny = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_DENY); |
153 [infoBarView addButton1:buttonAccept | 151 [infoBarView addButton1:buttonAccept |
154 tag1:TranslateInfoBarIOSTag::BEFORE_ACCEPT | 152 tag1:TranslateInfoBarIOSTag::BEFORE_ACCEPT |
155 button2:buttonDeny | 153 button2:buttonDeny |
156 tag2:TranslateInfoBarIOSTag::BEFORE_DENY | 154 tag2:TranslateInfoBarIOSTag::BEFORE_DENY |
157 target:self | 155 target:self |
158 action:@selector(infoBarButtonDidPress:)]; | 156 action:@selector(infoBarButtonDidPress:)]; |
159 return [[infoBarView retain] autorelease]; | 157 return [[infoBarView retain] autorelease]; |
160 } | 158 } |
161 | 159 |
162 - (void)updateInfobarLabelOnView:(UIView<InfoBarViewProtocol>*)view { | 160 - (void)updateInfobarLabelOnView:(InfoBarView*)view { |
163 NSString* originalLanguage = base::SysUTF16ToNSString( | 161 NSString* originalLanguage = base::SysUTF16ToNSString( |
164 _translateInfoBarDelegate->original_language_name()); | 162 _translateInfoBarDelegate->original_language_name()); |
165 NSString* targetLanguage = base::SysUTF16ToNSString( | 163 NSString* targetLanguage = base::SysUTF16ToNSString( |
166 _translateInfoBarDelegate->target_language_name()); | 164 _translateInfoBarDelegate->target_language_name()); |
167 base::string16 originalLanguageWithLink = | 165 base::string16 originalLanguageWithLink = |
168 base::SysNSStringToUTF16([[view class] | 166 base::SysNSStringToUTF16([[view class] |
169 stringAsLink:originalLanguage | 167 stringAsLink:originalLanguage |
170 tag:TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE]); | 168 tag:TranslateInfoBarIOSTag::BEFORE_SOURCE_LANGUAGE]); |
171 base::string16 targetLanguageWithLink = base::SysNSStringToUTF16([[view class] | 169 base::string16 targetLanguageWithLink = base::SysNSStringToUTF16([[view class] |
172 stringAsLink:targetLanguage | 170 stringAsLink:targetLanguage |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 [super removeView]; | 364 [super removeView]; |
367 [self dismissLanguageSelectionView]; | 365 [self dismissLanguageSelectionView]; |
368 } | 366 } |
369 | 367 |
370 - (void)detachView { | 368 - (void)detachView { |
371 [super detachView]; | 369 [super detachView]; |
372 [self dismissLanguageSelectionView]; | 370 [self dismissLanguageSelectionView]; |
373 } | 371 } |
374 | 372 |
375 @end | 373 @end |
OLD | NEW |