Index: athena/home/app_list_view_delegate.cc |
diff --git a/athena/home/app_list_view_delegate.cc b/athena/home/app_list_view_delegate.cc |
index 29ecb0574e4bc6d95041d912c240d46a7bc65050..bb1e0beb936a8029a3a1c82562eecf439772ef5a 100644 |
--- a/athena/home/app_list_view_delegate.cc |
+++ b/athena/home/app_list_view_delegate.cc |
@@ -8,6 +8,7 @@ |
#include <vector> |
#include "athena/home/public/app_model_builder.h" |
+#include "athena/home/public/search_controller_factory.h" |
#include "athena/strings/grit/athena_strings.h" |
#include "base/basictypes.h" |
#include "base/bind.h" |
@@ -16,6 +17,7 @@ |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "ui/app_list/app_list_model.h" |
#include "ui/app_list/search_box_model.h" |
+#include "ui/app_list/search_controller.h" |
#include "ui/app_list/search_provider.h" |
#include "ui/app_list/search_result.h" |
#include "ui/app_list/speech_ui_model.h" |
@@ -27,36 +29,21 @@ |
namespace athena { |
-AppListViewDelegate::AppListViewDelegate(AppModelBuilder* model_builder) |
+AppListViewDelegate::AppListViewDelegate( |
+ AppModelBuilder* model_builder, |
+ SearchControllerFactory* search_factory) |
: model_(new app_list::AppListModel), |
speech_ui_(new app_list::SpeechUIModel) { |
model_builder->PopulateApps(model_.get()); |
model_->search_box()->SetHintText( |
l10n_util::GetStringUTF16(IDS_ATHENA_SEARCH_BOX_HINT)); |
+ if (search_factory) { |
+ search_controller_ = |
+ search_factory->Create(model_->search_box(), model_->results()); |
+ } |
} |
AppListViewDelegate::~AppListViewDelegate() { |
- for (size_t i = 0; i < search_providers_.size(); ++i) |
- search_providers_[i]->set_result_changed_callback(base::Closure()); |
-} |
- |
-void AppListViewDelegate::RegisterSearchProvider( |
- app_list::SearchProvider* search_provider) { |
- // Right now we allow only one provider. |
- // TODO(mukai): port app-list's mixer and remove this restriction. |
- DCHECK(search_providers_.empty()); |
- search_provider->set_result_changed_callback(base::Bind( |
- &AppListViewDelegate::SearchResultChanged, base::Unretained(this))); |
- search_providers_.push_back(search_provider); |
-} |
- |
-void AppListViewDelegate::SearchResultChanged() { |
- // TODO(mukai): port app-list's Mixer to reorder the results properly. |
- app_list::SearchProvider* search_provider = search_providers_[0]; |
- const app_list::SearchProvider::Results& results = search_provider->results(); |
- model_->results()->DeleteAll(); |
- for (size_t i = 0; i < results.size(); ++i) |
- model_->results()->Add(results[i]->Duplicate().release()); |
} |
bool AppListViewDelegate::ForceNativeDesktop() const { |
@@ -82,26 +69,28 @@ void AppListViewDelegate::GetShortcutPathForApp( |
} |
void AppListViewDelegate::StartSearch() { |
- for (size_t i = 0; i < search_providers_.size(); ++i) |
- search_providers_[i]->Start(model_->search_box()->text()); |
+ if (search_controller_) |
+ search_controller_->Start(); |
} |
void AppListViewDelegate::StopSearch() { |
- for (size_t i = 0; i < search_providers_.size(); ++i) |
- search_providers_[i]->Stop(); |
+ if (search_controller_) |
+ search_controller_->Stop(); |
} |
void AppListViewDelegate::OpenSearchResult(app_list::SearchResult* result, |
bool auto_launch, |
int event_flags) { |
- result->Open(event_flags); |
+ if (search_controller_) |
+ search_controller_->OpenResult(result, event_flags); |
} |
void AppListViewDelegate::InvokeSearchResultAction( |
app_list::SearchResult* result, |
int action_index, |
int event_flags) { |
- // TODO(mukai): implement this. |
+ if (search_controller_) |
+ search_controller_->InvokeResultAction(result, action_index, event_flags); |
} |
base::TimeDelta AppListViewDelegate::GetAutoLaunchTimeout() { |