| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/views/importer_view.h" | 5 #include "chrome/browser/views/importer_view.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/string16.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/browser_list.h" | 10 #include "chrome/browser/browser_list.h" |
| 11 #include "chrome/browser/browser_window.h" | 11 #include "chrome/browser/browser_window.h" |
| 12 #include "chrome/browser/importer/importer_data_types.h" | 12 #include "chrome/browser/importer/importer_data_types.h" |
| 13 #include "grit/generated_resources.h" | 13 #include "grit/generated_resources.h" |
| 14 #include "grit/locale_settings.h" | 14 #include "grit/locale_settings.h" |
| 15 #include "views/controls/button/checkbox.h" | 15 #include "views/controls/button/checkbox.h" |
| 16 #include "views/controls/label.h" | 16 #include "views/controls/label.h" |
| 17 #include "views/grid_layout.h" | 17 #include "views/grid_layout.h" |
| 18 #include "views/standard_layout.h" | 18 #include "views/standard_layout.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 35 | 35 |
| 36 ImporterView::ImporterView(Profile* profile, int initial_state) | 36 ImporterView::ImporterView(Profile* profile, int initial_state) |
| 37 : import_from_label_(NULL), | 37 : import_from_label_(NULL), |
| 38 profile_combobox_(NULL), | 38 profile_combobox_(NULL), |
| 39 import_items_label_(NULL), | 39 import_items_label_(NULL), |
| 40 history_checkbox_(NULL), | 40 history_checkbox_(NULL), |
| 41 favorites_checkbox_(NULL), | 41 favorites_checkbox_(NULL), |
| 42 passwords_checkbox_(NULL), | 42 passwords_checkbox_(NULL), |
| 43 search_engines_checkbox_(NULL), | 43 search_engines_checkbox_(NULL), |
| 44 profile_(profile), | 44 profile_(profile), |
| 45 importer_host_(new ImporterHost()), | 45 ALLOW_THIS_IN_INITIALIZER_LIST(importer_host_(new ImporterHost(this))), |
| 46 initial_state_(initial_state) { | 46 initial_state_(initial_state) { |
| 47 DCHECK(profile); | 47 DCHECK(profile); |
| 48 SetupControl(); | 48 SetupControl(); |
| 49 } | 49 } |
| 50 | 50 |
| 51 ImporterView::~ImporterView() { | 51 ImporterView::~ImporterView() { |
| 52 } | 52 } |
| 53 | 53 |
| 54 void ImporterView::SetupControl() { | 54 void ImporterView::SetupControl() { |
| 55 // Adds all controls. | 55 // Adds all controls. |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 | 142 |
| 143 bool ImporterView::IsModal() const { | 143 bool ImporterView::IsModal() const { |
| 144 return true; | 144 return true; |
| 145 } | 145 } |
| 146 | 146 |
| 147 std::wstring ImporterView::GetWindowTitle() const { | 147 std::wstring ImporterView::GetWindowTitle() const { |
| 148 return l10n_util::GetString(IDS_IMPORT_SETTINGS_TITLE); | 148 return l10n_util::GetString(IDS_IMPORT_SETTINGS_TITLE); |
| 149 } | 149 } |
| 150 | 150 |
| 151 bool ImporterView::Accept() { | 151 bool ImporterView::Accept() { |
| 152 if (!IsDialogButtonEnabled(MessageBoxFlags::DIALOGBUTTON_OK)) { | 152 if (!IsDialogButtonEnabled(MessageBoxFlags::DIALOGBUTTON_OK)) |
| 153 return false; | 153 return false; |
| 154 } | |
| 155 | 154 |
| 156 uint16 items = GetCheckedItems(); | 155 uint16 items = GetCheckedItems(); |
| 157 | 156 |
| 158 int selected_index = profile_combobox_->selected_item(); | 157 int selected_index = profile_combobox_->selected_item(); |
| 159 StartImportingWithUI(GetWidget()->GetNativeView(), items, | 158 StartImportingWithUI(GetWidget()->GetNativeView(), items, |
| 160 importer_host_.get(), | 159 importer_host_.get(), |
| 161 importer_host_->GetSourceProfileInfoAt(selected_index), | 160 importer_host_->GetSourceProfileInfoAt(selected_index), |
| 162 profile_, this, false); | 161 profile_, this, false); |
| 163 // We return false here to prevent the window from being closed. We will be | 162 // We return false here to prevent the window from being closed. We will be |
| 164 // notified back by our implementation of ImportObserver when the import is | 163 // notified back by our implementation of ImportObserver when the import is |
| 165 // complete so that we can close ourselves. | 164 // complete so that we can close ourselves. |
| 166 return false; | 165 return false; |
| 167 } | 166 } |
| 168 | 167 |
| 169 views::View* ImporterView::GetContentsView() { | 168 views::View* ImporterView::GetContentsView() { |
| 170 return this; | 169 return this; |
| 171 } | 170 } |
| 172 | 171 |
| 173 void ImporterView::ButtonPressed( | 172 void ImporterView::ButtonPressed( |
| 174 views::Button* sender, const views::Event& event) { | 173 views::Button* sender, const views::Event& event) { |
| 175 // When no checkbox is checked we should disable the "Import" button. | 174 // When no checkbox is checked we should disable the "Import" button. |
| 176 // This forces the button to evaluate what state they should be in. | 175 // This forces the button to evaluate what state they should be in. |
| 177 GetDialogClientView()->UpdateDialogButtons(); | 176 GetDialogClientView()->UpdateDialogButtons(); |
| 178 } | 177 } |
| 179 | 178 |
| 180 int ImporterView::GetItemCount() { | 179 int ImporterView::GetItemCount() { |
| 181 DCHECK(importer_host_.get()); | 180 DCHECK(importer_host_.get()); |
| 182 int item_count = importer_host_->GetAvailableProfileCount(); | 181 return checkbox_items_.size(); |
| 183 if (checkbox_items_.size() < static_cast<size_t>(item_count)) | |
| 184 checkbox_items_.resize(item_count, initial_state_); | |
| 185 return item_count; | |
| 186 } | 182 } |
| 187 | 183 |
| 188 string16 ImporterView::GetItemAt(int index) { | 184 string16 ImporterView::GetItemAt(int index) { |
| 189 DCHECK(importer_host_.get()); | 185 DCHECK(importer_host_.get()); |
| 190 return WideToUTF16Hack(importer_host_->GetSourceProfileNameAt(index)); | 186 |
| 187 if (!importer_host_->source_profiles_loaded()) |
| 188 return l10n_util::GetStringUTF16(IDS_IMPORT_LOADING_PROFILES); |
| 189 else |
| 190 return WideToUTF16Hack(importer_host_->GetSourceProfileNameAt(index)); |
| 191 } | 191 } |
| 192 | 192 |
| 193 void ImporterView::ItemChanged(views::Combobox* combobox, | 193 void ImporterView::ItemChanged(views::Combobox* combobox, |
| 194 int prev_index, int new_index) { | 194 int prev_index, int new_index) { |
| 195 DCHECK(combobox); | 195 DCHECK(combobox); |
| 196 DCHECK(checkbox_items_.size() >= | 196 DCHECK(checkbox_items_.size() >= |
| 197 static_cast<size_t>(importer_host_->GetAvailableProfileCount())); | 197 static_cast<size_t>(importer_host_->GetAvailableProfileCount())); |
| 198 | 198 |
| 199 if (prev_index == new_index) | 199 if (prev_index == new_index) |
| 200 return; | 200 return; |
| 201 | 201 |
| 202 if (!importer_host_->source_profiles_loaded()) { |
| 203 SetCheckedItemsState(0); |
| 204 return; |
| 205 } |
| 206 |
| 202 // Save the current state | 207 // Save the current state |
| 203 uint16 prev_items = GetCheckedItems(); | 208 uint16 prev_items = GetCheckedItems(); |
| 204 checkbox_items_[prev_index] = prev_items; | 209 checkbox_items_[prev_index] = prev_items; |
| 205 | 210 |
| 206 // Enable/Disable the checkboxes for this Item | 211 // Enable/Disable the checkboxes for this Item |
| 207 uint16 new_enabled_items = importer_host_->GetSourceProfileInfoAt( | 212 uint16 new_enabled_items = importer_host_->GetSourceProfileInfoAt( |
| 208 new_index).services_supported; | 213 new_index).services_supported; |
| 209 SetCheckedItemsState(new_enabled_items); | 214 SetCheckedItemsState(new_enabled_items); |
| 210 | 215 |
| 211 // Set the checked items for this Item | 216 // Set the checked items for this Item |
| 212 uint16 new_items = checkbox_items_[new_index]; | 217 uint16 new_items = checkbox_items_[new_index]; |
| 213 SetCheckedItems(new_items); | 218 SetCheckedItems(new_items); |
| 214 } | 219 } |
| 215 | 220 |
| 221 void ImporterView::SourceProfilesLoaded() { |
| 222 DCHECK(importer_host_->source_profiles_loaded()); |
| 223 checkbox_items_.resize( |
| 224 importer_host_->GetAvailableProfileCount(), initial_state_); |
| 225 |
| 226 // Reload the profile combobox. |
| 227 profile_combobox_->ModelChanged(); |
| 228 } |
| 229 |
| 216 void ImporterView::ImportCanceled() { | 230 void ImporterView::ImportCanceled() { |
| 217 ImportComplete(); | 231 ImportComplete(); |
| 218 } | 232 } |
| 219 | 233 |
| 220 void ImporterView::ImportComplete() { | 234 void ImporterView::ImportComplete() { |
| 221 // Now close this window since the import completed or was canceled. | 235 // Now close this window since the import completed or was canceled. |
| 222 window()->Close(); | 236 window()->Close(); |
| 223 } | 237 } |
| 224 | 238 |
| 225 views::Checkbox* ImporterView::InitCheckbox(const std::wstring& text, | 239 views::Checkbox* ImporterView::InitCheckbox(const std::wstring& text, |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 if (history_checkbox_->IsEnabled()) | 289 if (history_checkbox_->IsEnabled()) |
| 276 history_checkbox_->SetChecked(!!(items & importer::HISTORY)); | 290 history_checkbox_->SetChecked(!!(items & importer::HISTORY)); |
| 277 | 291 |
| 278 if (favorites_checkbox_->IsEnabled()) | 292 if (favorites_checkbox_->IsEnabled()) |
| 279 favorites_checkbox_->SetChecked(!!(items & importer::FAVORITES)); | 293 favorites_checkbox_->SetChecked(!!(items & importer::FAVORITES)); |
| 280 | 294 |
| 281 if (passwords_checkbox_->IsEnabled()) | 295 if (passwords_checkbox_->IsEnabled()) |
| 282 passwords_checkbox_->SetChecked(!!(items & importer::PASSWORDS)); | 296 passwords_checkbox_->SetChecked(!!(items & importer::PASSWORDS)); |
| 283 | 297 |
| 284 if (search_engines_checkbox_->IsEnabled()) | 298 if (search_engines_checkbox_->IsEnabled()) |
| 285 search_engines_checkbox_->SetChecked(!!(items & | 299 search_engines_checkbox_->SetChecked(!!(items & importer::SEARCH_ENGINES)); |
| 286 importer::SEARCH_ENGINES)); | |
| 287 } | 300 } |
| OLD | NEW |