| 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() {
|
|
|