Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include "chrome/browser/ui/autofill/autofill_dialog_models.h" | 5 #include "chrome/browser/ui/autofill/autofill_dialog_models.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 91 return false; | 91 return false; |
| 92 } | 92 } |
| 93 | 93 |
| 94 void SuggestionsMenuModel::ExecuteCommand(int command_id, int event_flags) { | 94 void SuggestionsMenuModel::ExecuteCommand(int command_id, int event_flags) { |
| 95 checked_item_ = command_id; | 95 checked_item_ = command_id; |
| 96 delegate_->SuggestionItemSelected(*this); | 96 delegate_->SuggestionItemSelected(*this); |
| 97 } | 97 } |
| 98 | 98 |
| 99 // AccountChooserModel --------------------------------------------------------- | 99 // AccountChooserModel --------------------------------------------------------- |
| 100 | 100 |
| 101 const int AccountChooserModel::kWalletItemId = 0; | 101 const int AccountChooserModel::kContentAreaWalletItemId = 0; |
|
Evan Stade
2013/03/29 23:08:45
I do not understand this variable name or its purp
aruslan
2013/03/30 00:07:47
Done.
| |
| 102 const int AccountChooserModel::kAutofillItemId = 1; | 102 const int AccountChooserModel::kAutofillItemId = 1; |
| 103 const int AccountChooserModel::kFirstAccountItemId = 2; | |
| 103 | 104 |
| 104 AccountChooserModelDelegate::~AccountChooserModelDelegate() {} | 105 AccountChooserModelDelegate::~AccountChooserModelDelegate() {} |
| 105 | 106 |
| 106 AccountChooserModel::AccountChooserModel( | 107 AccountChooserModel::AccountChooserModel( |
| 107 AccountChooserModelDelegate* delegate, | 108 AccountChooserModelDelegate* delegate, |
| 108 PrefService* prefs) | 109 PrefService* prefs) |
| 109 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), | 110 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), |
| 110 account_delegate_(delegate), | 111 account_delegate_(delegate), |
| 111 prefs_(prefs), | 112 prefs_(prefs), |
| 112 checked_item_(kWalletItemId), | 113 checked_item_(kContentAreaWalletItemId), |
| 113 had_wallet_error_(false) { | 114 had_wallet_error_(false) { |
| 114 pref_change_registrar_.Init(prefs); | 115 pref_change_registrar_.Init(prefs); |
| 115 pref_change_registrar_.Add( | 116 pref_change_registrar_.Add( |
| 116 prefs::kAutofillDialogPayWithoutWallet, | 117 prefs::kAutofillDialogPayWithoutWallet, |
| 117 base::Bind(&AccountChooserModel::PrefChanged, base::Unretained(this))); | 118 base::Bind(&AccountChooserModel::PrefChanged, base::Unretained(this))); |
| 118 | |
| 119 // TODO(estade): proper strings and l10n. | |
| 120 AddCheckItem(kWalletItemId, ASCIIToUTF16("Google Wallet")); | |
| 121 SetIcon( | |
| 122 kWalletItemId, | |
| 123 ui::ResourceBundle::GetSharedInstance().GetImageNamed(IDR_WALLET_ICON)); | |
| 124 AddCheckItemWithStringId(kAutofillItemId, | |
| 125 IDS_AUTOFILL_DIALOG_PAY_WITHOUT_WALLET); | |
| 126 UpdateCheckmarkFromPref(); | 119 UpdateCheckmarkFromPref(); |
| 120 ReconstructMenuItems(); | |
| 127 } | 121 } |
| 128 | 122 |
| 129 AccountChooserModel::~AccountChooserModel() { | 123 AccountChooserModel::~AccountChooserModel() { |
| 130 } | 124 } |
| 131 | 125 |
| 126 void AccountChooserModel::ForceWalletAccountSelected() { | |
| 127 if (checked_item_ == kContentAreaWalletItemId) return; | |
|
Evan Stade
2013/03/29 23:08:45
please put return on a new line.
aruslan
2013/03/30 00:07:47
Done.
| |
| 128 checked_item_ = kContentAreaWalletItemId; | |
| 129 account_delegate_->AccountChoiceChanged(); | |
| 130 } | |
| 131 | |
| 132 bool AccountChooserModel::HasAccountsToChoose() const { | |
| 133 return !had_wallet_error_ && | |
| 134 !(current_username_.empty() && available_accounts_.empty()); | |
| 135 } | |
| 136 | |
| 137 void AccountChooserModel::SetAvailableAccounts( | |
| 138 const std::vector<std::string>& accounts) { | |
| 139 available_accounts_ = accounts; | |
| 140 ReconstructMenuItems(); | |
| 141 } | |
| 142 | |
| 143 void AccountChooserModel::SetCurrentlySignedInAccount( | |
| 144 const std::string& account) { | |
| 145 current_username_ = account; | |
| 146 ReconstructMenuItems(); | |
| 147 } | |
| 148 | |
| 149 std::string AccountChooserModel::GetCurrentlySignedInAccount() const { | |
| 150 return current_username_; | |
| 151 } | |
| 152 | |
| 153 void AccountChooserModel::ResetCurrentlySignedInAccount() { | |
| 154 current_username_.clear(); | |
| 155 ReconstructMenuItems(); | |
| 156 } | |
| 157 | |
| 132 bool AccountChooserModel::IsCommandIdChecked(int command_id) const { | 158 bool AccountChooserModel::IsCommandIdChecked(int command_id) const { |
| 133 return command_id == checked_item_; | 159 return command_id == checked_item_; |
| 134 } | 160 } |
| 135 | 161 |
| 136 bool AccountChooserModel::IsCommandIdEnabled(int command_id) const { | 162 bool AccountChooserModel::IsCommandIdEnabled(int command_id) const { |
| 137 if (command_id == kWalletItemId && had_wallet_error_) | 163 // Currently, _any_ (non-sign-in) error disables _all_ Wallet accounts. |
| 164 if (command_id != kAutofillItemId && had_wallet_error_) | |
| 138 return false; | 165 return false; |
| 139 | 166 |
| 140 return true; | 167 return true; |
| 141 } | 168 } |
| 142 | 169 |
| 143 bool AccountChooserModel::GetAcceleratorForCommandId( | 170 bool AccountChooserModel::GetAcceleratorForCommandId( |
| 144 int command_id, | 171 int command_id, |
| 145 ui::Accelerator* accelerator) { | 172 ui::Accelerator* accelerator) { |
| 146 return false; | 173 return false; |
| 147 } | 174 } |
| 148 | 175 |
| 149 void AccountChooserModel::ExecuteCommand(int command_id, int event_flags) { | 176 void AccountChooserModel::ExecuteCommand(int command_id, int event_flags) { |
| 150 if (checked_item_ == command_id) | 177 if (checked_item_ == command_id) |
| 151 return; | 178 return; |
| 152 | 179 |
| 153 checked_item_ = command_id; | 180 checked_item_ = command_id; |
| 154 account_delegate_->AccountChoiceChanged(); | 181 account_delegate_->AccountChoiceChanged(); |
| 155 } | 182 } |
| 156 | 183 |
| 157 void AccountChooserModel::SetHadWalletError() { | 184 void AccountChooserModel::SetHadWalletError() { |
| 185 // Any non-sign-in error disables all Wallet accounts. | |
| 158 had_wallet_error_ = true; | 186 had_wallet_error_ = true; |
| 159 checked_item_ = kAutofillItemId; | 187 checked_item_ = kAutofillItemId; |
| 188 ResetCurrentlySignedInAccount(); | |
| 160 account_delegate_->AccountChoiceChanged(); | 189 account_delegate_->AccountChoiceChanged(); |
| 161 } | 190 } |
| 162 | 191 |
| 163 void AccountChooserModel::SetHadWalletSigninError() { | 192 void AccountChooserModel::SetHadWalletSigninError() { |
| 164 checked_item_ = kAutofillItemId; | 193 checked_item_ = kAutofillItemId; |
| 194 ResetCurrentlySignedInAccount(); | |
| 165 account_delegate_->AccountChoiceChanged(); | 195 account_delegate_->AccountChoiceChanged(); |
| 166 } | 196 } |
| 167 | 197 |
| 168 bool AccountChooserModel::WalletIsSelected() const { | 198 bool AccountChooserModel::WalletIsSelected() const { |
| 169 return checked_item_ == kWalletItemId; | 199 return checked_item_ != kAutofillItemId; |
| 200 } | |
| 201 | |
| 202 bool AccountChooserModel::IsCurrentlySignedInAccountSelected() const { | |
| 203 return checked_item_ == kContentAreaWalletItemId; | |
| 170 } | 204 } |
| 171 | 205 |
| 172 void AccountChooserModel::PrefChanged(const std::string& pref) { | 206 void AccountChooserModel::PrefChanged(const std::string& pref) { |
| 173 DCHECK(pref == prefs::kAutofillDialogPayWithoutWallet); | 207 DCHECK(pref == prefs::kAutofillDialogPayWithoutWallet); |
| 174 UpdateCheckmarkFromPref(); | 208 UpdateCheckmarkFromPref(); |
| 175 account_delegate_->AccountChoiceChanged(); | 209 account_delegate_->AccountChoiceChanged(); |
| 176 } | 210 } |
| 177 | 211 |
| 178 void AccountChooserModel::UpdateCheckmarkFromPref() { | 212 void AccountChooserModel::UpdateCheckmarkFromPref() { |
| 179 if (prefs_->GetBoolean(prefs::kAutofillDialogPayWithoutWallet)) | 213 if (prefs_->GetBoolean(prefs::kAutofillDialogPayWithoutWallet)) |
| 180 checked_item_ = kAutofillItemId; | 214 checked_item_ = kAutofillItemId; |
| 181 else | 215 else |
| 182 checked_item_ = kWalletItemId; | 216 checked_item_ = kContentAreaWalletItemId; |
| 217 } | |
| 218 | |
| 219 void AccountChooserModel::ReconstructMenuItems() { | |
| 220 // If menu has to be reconstructed, either the currently sign-in account | |
| 221 // should be selected, or the autofill data should be used. | |
| 222 DCHECK_GE(kAutofillItemId, checked_item_); | |
| 223 Clear(); | |
| 224 const gfx::Image& wallet_icon = | |
| 225 ui::ResourceBundle::GetSharedInstance().GetImageNamed(IDR_WALLET_ICON); | |
| 226 | |
| 227 if (!current_username_.empty()) { | |
| 228 AddCheckItem(kContentAreaWalletItemId, ASCIIToUTF16(current_username_)); | |
| 229 SetIcon(GetIndexOfCommandId(kContentAreaWalletItemId), wallet_icon); | |
| 230 } | |
| 231 | |
| 232 for (size_t i = 0; i < available_accounts_.size(); ++i) { | |
| 233 if (available_accounts_[i] != current_username_) { | |
| 234 AddCheckItem(kFirstAccountItemId + i, | |
| 235 ASCIIToUTF16(available_accounts_[i])); | |
| 236 SetIcon(GetIndexOfCommandId(kFirstAccountItemId + i), wallet_icon); | |
| 237 } | |
| 238 } | |
| 239 | |
| 240 AddCheckItemWithStringId(kAutofillItemId, | |
| 241 IDS_AUTOFILL_DIALOG_PAY_WITHOUT_WALLET); | |
| 183 } | 242 } |
| 184 | 243 |
| 185 // MonthComboboxModel ---------------------------------------------------------- | 244 // MonthComboboxModel ---------------------------------------------------------- |
| 186 | 245 |
| 187 MonthComboboxModel::MonthComboboxModel() {} | 246 MonthComboboxModel::MonthComboboxModel() {} |
| 188 | 247 |
| 189 MonthComboboxModel::~MonthComboboxModel() {} | 248 MonthComboboxModel::~MonthComboboxModel() {} |
| 190 | 249 |
| 191 int MonthComboboxModel::GetItemCount() const { | 250 int MonthComboboxModel::GetItemCount() const { |
| 192 // 12 months plus the empty entry. | 251 // 12 months plus the empty entry. |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 219 } | 278 } |
| 220 | 279 |
| 221 string16 YearComboboxModel::GetItemAt(int index) { | 280 string16 YearComboboxModel::GetItemAt(int index) { |
| 222 if (index == 0) | 281 if (index == 0) |
| 223 return string16(); | 282 return string16(); |
| 224 | 283 |
| 225 return base::IntToString16(this_year_ + index - 1); | 284 return base::IntToString16(this_year_ + index - 1); |
| 226 } | 285 } |
| 227 | 286 |
| 228 } // autofill | 287 } // autofill |
| OLD | NEW |