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

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

Issue 2952403002: [ObjC ARC] Converts ios/chrome/browser/translate:translate to ARC. (Closed)
Patch Set: Created 3 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/after_translate_infobar_controller.h" 5 #include "ios/chrome/browser/translate/after_translate_infobar_controller.h"
6 6
7 #include "base/mac/scoped_nsobject.h"
8 #include "base/strings/sys_string_conversions.h" 7 #include "base/strings/sys_string_conversions.h"
9 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
10 #include "components/strings/grit/components_strings.h" 9 #include "components/strings/grit/components_strings.h"
11 #include "components/translate/core/browser/translate_infobar_delegate.h" 10 #include "components/translate/core/browser/translate_infobar_delegate.h"
12 #include "ios/chrome/browser/translate/translate_infobar_tags.h" 11 #include "ios/chrome/browser/translate/translate_infobar_tags.h"
13 #import "ios/chrome/browser/ui/infobars/infobar_view.h" 12 #import "ios/chrome/browser/ui/infobars/infobar_view.h"
14 #import "ios/chrome/browser/ui/infobars/infobar_view_delegate.h" 13 #import "ios/chrome/browser/ui/infobars/infobar_view_delegate.h"
15 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/base/l10n/l10n_util.h"
16 #include "ui/gfx/image/image.h" 15 #include "ui/gfx/image/image.h"
17 16
17 #if !defined(__has_feature) || !__has_feature(objc_arc)
18 #error "This file requires ARC support."
19 #endif
20
18 namespace { 21 namespace {
19 enum AlwaysTranslateSwitchState { 22 enum AlwaysTranslateSwitchState {
20 ALWAYS_TRANSLATE_SWITCH_NOT_CHANGED, 23 ALWAYS_TRANSLATE_SWITCH_NOT_CHANGED,
21 ALWAYS_TRANSLATE_SWITCH_SET_TO_ENABLED, 24 ALWAYS_TRANSLATE_SWITCH_SET_TO_ENABLED,
22 ALWAYS_TRANSLATE_SWITCH_SET_TO_DISABLED, 25 ALWAYS_TRANSLATE_SWITCH_SET_TO_DISABLED,
23 }; 26 };
24 } // namespace 27 } // namespace
25 28
26 @interface AfterTranslateInfoBarController () { 29 @interface AfterTranslateInfoBarController () {
27 translate::TranslateInfoBarDelegate* _translateInfoBarDelegate; // weak 30 translate::TranslateInfoBarDelegate* _translateInfoBarDelegate; // weak
28 AlwaysTranslateSwitchState _alwaysTranslateSwitchState; 31 AlwaysTranslateSwitchState _alwaysTranslateSwitchState;
29 } 32 }
30 33
31 // Action for any of the user defined buttons. 34 // Action for any of the user defined buttons.
32 - (void)infoBarButtonDidPress:(id)sender; 35 - (void)infoBarButtonDidPress:(id)sender;
33 36
34 @end 37 @end
35 38
36 @implementation AfterTranslateInfoBarController 39 @implementation AfterTranslateInfoBarController
37 40
38 #pragma mark - 41 #pragma mark -
39 #pragma mark InfoBarControllerProtocol 42 #pragma mark InfoBarControllerProtocol
40 43
41 - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate 44 - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate
42 frame:(CGRect)frame { 45 frame:(CGRect)frame {
43 base::scoped_nsobject<InfoBarView> infoBarView; 46 InfoBarView* infoBarView;
44 _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); 47 _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate();
45 DCHECK(_translateInfoBarDelegate); 48 DCHECK(_translateInfoBarDelegate);
46 infoBarView.reset( 49 infoBarView =
47 [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); 50 [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate];
48 // Icon 51 // Icon
49 gfx::Image icon = _translateInfoBarDelegate->GetIcon(); 52 gfx::Image icon = _translateInfoBarDelegate->GetIcon();
50 if (!icon.IsEmpty()) 53 if (!icon.IsEmpty())
51 [infoBarView addLeftIcon:icon.ToUIImage()]; 54 [infoBarView addLeftIcon:icon.ToUIImage()];
52 // Main text. 55 // Main text.
53 const bool autodeterminedSourceLanguage = 56 const bool autodeterminedSourceLanguage =
54 _translateInfoBarDelegate->original_language_code() == 57 _translateInfoBarDelegate->original_language_code() ==
55 translate::kUnknownLanguageCode; 58 translate::kUnknownLanguageCode;
56 bool swappedLanguageButtons; 59 bool swappedLanguageButtons;
57 std::vector<base::string16> strings; 60 std::vector<base::string16> strings;
58 translate::TranslateInfoBarDelegate::GetAfterTranslateStrings( 61 translate::TranslateInfoBarDelegate::GetAfterTranslateStrings(
59 &strings, &swappedLanguageButtons, autodeterminedSourceLanguage); 62 &strings, &swappedLanguageButtons, autodeterminedSourceLanguage);
60 DCHECK_EQ(autodeterminedSourceLanguage ? 2U : 3U, strings.size()); 63 DCHECK_EQ(autodeterminedSourceLanguage ? 2U : 3U, strings.size());
61 NSString* label1 = base::SysUTF16ToNSString(strings[0]); 64 NSString* label1 = base::SysUTF16ToNSString(strings[0]);
62 NSString* label2 = base::SysUTF16ToNSString(strings[1]); 65 NSString* label2 = base::SysUTF16ToNSString(strings[1]);
63 NSString* label3 = autodeterminedSourceLanguage 66 NSString* label3 = autodeterminedSourceLanguage
64 ? @"" 67 ? @""
65 : base::SysUTF16ToNSString(strings[2]); 68 : base::SysUTF16ToNSString(strings[2]);
66 base::string16 stdOriginal = 69 base::string16 stdOriginal =
67 _translateInfoBarDelegate->original_language_name(); 70 _translateInfoBarDelegate->original_language_name();
68 NSString* original = base::SysUTF16ToNSString(stdOriginal); 71 NSString* original = base::SysUTF16ToNSString(stdOriginal);
69 NSString* target = base::SysUTF16ToNSString( 72 NSString* target = base::SysUTF16ToNSString(
70 _translateInfoBarDelegate->target_language_name()); 73 _translateInfoBarDelegate->target_language_name());
71 base::scoped_nsobject<NSString> label( 74 NSString* label =
72 [[NSString alloc] initWithFormat:@"%@ %@ %@%@ %@.", label1, original, 75 [[NSString alloc] initWithFormat:@"%@ %@ %@%@ %@.", label1, original,
73 label2, label3, target]); 76 label2, label3, target];
74 [infoBarView addLabel:label]; 77 [infoBarView addLabel:label];
75 // Close button. 78 // Close button.
76 [infoBarView addCloseButtonWithTag:TranslateInfoBarIOSTag::CLOSE 79 [infoBarView addCloseButtonWithTag:TranslateInfoBarIOSTag::CLOSE
77 target:self 80 target:self
78 action:@selector(infoBarButtonDidPress:)]; 81 action:@selector(infoBarButtonDidPress:)];
79 // Other buttons. 82 // Other buttons.
80 NSString* buttonRevert = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_REVERT); 83 NSString* buttonRevert = l10n_util::GetNSString(IDS_TRANSLATE_INFOBAR_REVERT);
81 NSString* buttonOptions = l10n_util::GetNSString(IDS_DONE); 84 NSString* buttonOptions = l10n_util::GetNSString(IDS_DONE);
82 [infoBarView addButton1:buttonOptions 85 [infoBarView addButton1:buttonOptions
83 tag1:TranslateInfoBarIOSTag::AFTER_DONE 86 tag1:TranslateInfoBarIOSTag::AFTER_DONE
84 button2:buttonRevert 87 button2:buttonRevert
85 tag2:TranslateInfoBarIOSTag::AFTER_REVERT 88 tag2:TranslateInfoBarIOSTag::AFTER_REVERT
86 target:self 89 target:self
87 action:@selector(infoBarButtonDidPress:)]; 90 action:@selector(infoBarButtonDidPress:)];
88 // Always translate switch. 91 // Always translate switch.
89 _alwaysTranslateSwitchState = ALWAYS_TRANSLATE_SWITCH_NOT_CHANGED; 92 _alwaysTranslateSwitchState = ALWAYS_TRANSLATE_SWITCH_NOT_CHANGED;
90 if (_translateInfoBarDelegate->ShouldShowAlwaysTranslateShortcut()) { 93 if (_translateInfoBarDelegate->ShouldShowAlwaysTranslateShortcut()) {
91 base::string16 alwaysTranslate = l10n_util::GetStringFUTF16( 94 base::string16 alwaysTranslate = l10n_util::GetStringFUTF16(
92 IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE, stdOriginal); 95 IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE, stdOriginal);
93 const BOOL switchValue = _translateInfoBarDelegate->ShouldAlwaysTranslate(); 96 const BOOL switchValue = _translateInfoBarDelegate->ShouldAlwaysTranslate();
94 [infoBarView 97 [infoBarView
95 addSwitchWithLabel:base::SysUTF16ToNSString(alwaysTranslate) 98 addSwitchWithLabel:base::SysUTF16ToNSString(alwaysTranslate)
96 isOn:switchValue 99 isOn:switchValue
97 tag:TranslateInfoBarIOSTag::ALWAYS_TRANSLATE_SWITCH 100 tag:TranslateInfoBarIOSTag::ALWAYS_TRANSLATE_SWITCH
98 target:self 101 target:self
99 action:@selector(infoBarSwitchDidPress:)]; 102 action:@selector(infoBarSwitchDidPress:)];
100 } 103 }
101 return [[infoBarView retain] autorelease]; 104 return infoBarView;
102 } 105 }
103 106
104 #pragma mark - Handling of User Events 107 #pragma mark - Handling of User Events
105 108
106 - (void)infoBarButtonDidPress:(id)sender { 109 - (void)infoBarButtonDidPress:(id)sender {
107 // This press might have occurred after the user has already pressed a button, 110 // This press might have occurred after the user has already pressed a button,
108 // in which case the view has been detached from the delegate and this press 111 // in which case the view has been detached from the delegate and this press
109 // should be ignored. 112 // should be ignored.
110 if (!self.delegate) { 113 if (!self.delegate) {
111 return; 114 return;
(...skipping 28 matching lines...) Expand all
140 143
141 const bool alwaysTranslate = 144 const bool alwaysTranslate =
142 _alwaysTranslateSwitchState == ALWAYS_TRANSLATE_SWITCH_SET_TO_ENABLED; 145 _alwaysTranslateSwitchState == ALWAYS_TRANSLATE_SWITCH_SET_TO_ENABLED;
143 if (alwaysTranslate == _translateInfoBarDelegate->ShouldAlwaysTranslate()) 146 if (alwaysTranslate == _translateInfoBarDelegate->ShouldAlwaysTranslate())
144 return; 147 return;
145 148
146 _translateInfoBarDelegate->ToggleAlwaysTranslate(); 149 _translateInfoBarDelegate->ToggleAlwaysTranslate();
147 } 150 }
148 151
149 @end 152 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/translate/BUILD.gn ('k') | ios/chrome/browser/translate/before_translate_infobar_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698