| Index: chrome/browser/ui/views/importer_view.cc
|
| diff --git a/chrome/browser/ui/views/importer_view.cc b/chrome/browser/ui/views/importer_view.cc
|
| index 4ef686fcdf2860515060aecd9d3e92b3986602cf..cbbfba7354cb0e38f76d4820fbbc7beb10b5898d 100644
|
| --- a/chrome/browser/ui/views/importer_view.cc
|
| +++ b/chrome/browser/ui/views/importer_view.cc
|
| @@ -5,7 +5,7 @@
|
| #include "chrome/browser/views/importer_view.h"
|
|
|
| #include "app/l10n_util.h"
|
| -#include "base/string16.h"
|
| +#include "base/compiler_specific.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/browser_list.h"
|
| #include "chrome/browser/browser_window.h"
|
| @@ -42,7 +42,7 @@ ImporterView::ImporterView(Profile* profile, int initial_state)
|
| passwords_checkbox_(NULL),
|
| search_engines_checkbox_(NULL),
|
| profile_(profile),
|
| - importer_host_(new ImporterHost()),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(importer_host_(new ImporterHost(this))),
|
| initial_state_(initial_state) {
|
| DCHECK(profile);
|
| SetupControl();
|
| @@ -149,9 +149,8 @@ std::wstring ImporterView::GetWindowTitle() const {
|
| }
|
|
|
| bool ImporterView::Accept() {
|
| - if (!IsDialogButtonEnabled(MessageBoxFlags::DIALOGBUTTON_OK)) {
|
| + if (!IsDialogButtonEnabled(MessageBoxFlags::DIALOGBUTTON_OK))
|
| return false;
|
| - }
|
|
|
| uint16 items = GetCheckedItems();
|
|
|
| @@ -179,15 +178,16 @@ void ImporterView::ButtonPressed(
|
|
|
| int ImporterView::GetItemCount() {
|
| DCHECK(importer_host_.get());
|
| - int item_count = importer_host_->GetAvailableProfileCount();
|
| - if (checkbox_items_.size() < static_cast<size_t>(item_count))
|
| - checkbox_items_.resize(item_count, initial_state_);
|
| - return item_count;
|
| + return checkbox_items_.size();
|
| }
|
|
|
| string16 ImporterView::GetItemAt(int index) {
|
| DCHECK(importer_host_.get());
|
| - return WideToUTF16Hack(importer_host_->GetSourceProfileNameAt(index));
|
| +
|
| + if (!importer_host_->source_profiles_loaded())
|
| + return l10n_util::GetStringUTF16(IDS_IMPORT_LOADING_PROFILES);
|
| + else
|
| + return WideToUTF16Hack(importer_host_->GetSourceProfileNameAt(index));
|
| }
|
|
|
| void ImporterView::ItemChanged(views::Combobox* combobox,
|
| @@ -199,6 +199,11 @@ void ImporterView::ItemChanged(views::Combobox* combobox,
|
| if (prev_index == new_index)
|
| return;
|
|
|
| + if (!importer_host_->source_profiles_loaded()) {
|
| + SetCheckedItemsState(0);
|
| + return;
|
| + }
|
| +
|
| // Save the current state
|
| uint16 prev_items = GetCheckedItems();
|
| checkbox_items_[prev_index] = prev_items;
|
| @@ -213,6 +218,15 @@ void ImporterView::ItemChanged(views::Combobox* combobox,
|
| SetCheckedItems(new_items);
|
| }
|
|
|
| +void ImporterView::SourceProfilesLoaded() {
|
| + DCHECK(importer_host_->source_profiles_loaded());
|
| + checkbox_items_.resize(
|
| + importer_host_->GetAvailableProfileCount(), initial_state_);
|
| +
|
| + // Reload the profile combobox.
|
| + profile_combobox_->ModelChanged();
|
| +}
|
| +
|
| void ImporterView::ImportCanceled() {
|
| ImportComplete();
|
| }
|
| @@ -282,6 +296,5 @@ void ImporterView::SetCheckedItems(uint16 items) {
|
| passwords_checkbox_->SetChecked(!!(items & importer::PASSWORDS));
|
|
|
| if (search_engines_checkbox_->IsEnabled())
|
| - search_engines_checkbox_->SetChecked(!!(items &
|
| - importer::SEARCH_ENGINES));
|
| + search_engines_checkbox_->SetChecked(!!(items & importer::SEARCH_ENGINES));
|
| }
|
|
|