Index: ui/app_list/app_list_view.cc |
diff --git a/ui/app_list/app_list_view.cc b/ui/app_list/app_list_view.cc |
deleted file mode 100644 |
index 1b5bf521f7cf62c2ee15bb50bdd60347c61f2221..0000000000000000000000000000000000000000 |
--- a/ui/app_list/app_list_view.cc |
+++ /dev/null |
@@ -1,306 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ui/app_list/app_list_view.h" |
- |
-#include <algorithm> |
- |
-#include "base/string_util.h" |
-#include "ui/app_list/app_list_background.h" |
-#include "ui/app_list/app_list_constants.h" |
-#include "ui/app_list/app_list_item_model.h" |
-#include "ui/app_list/app_list_item_view.h" |
-#include "ui/app_list/app_list_model.h" |
-#include "ui/app_list/app_list_view_delegate.h" |
-#include "ui/app_list/contents_view.h" |
-#include "ui/app_list/pagination_model.h" |
-#include "ui/app_list/search_box_model.h" |
-#include "ui/app_list/search_box_view.h" |
-#include "ui/base/events/event.h" |
-#include "ui/gfx/insets.h" |
-#include "ui/gfx/path.h" |
-#include "ui/gfx/skia_util.h" |
-#include "ui/views/bubble/bubble_frame_view.h" |
-#include "ui/views/controls/textfield/textfield.h" |
-#include "ui/views/layout/box_layout.h" |
-#include "ui/views/widget/widget.h" |
- |
-namespace app_list { |
- |
-namespace { |
- |
-// Inner padding space in pixels of bubble contents. |
-const int kInnerPadding = 1; |
- |
-// The distance between the arrow tip and edge of the anchor view. |
-const int kArrowOffset = 10; |
- |
-// The maximum allowed time to wait for icon loading in milliseconds. |
-const int kMaxIconLoadingWaitTimeInMs = 50; |
- |
-} // namespace |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// AppListView::IconLoader |
- |
-class AppListView::IconLoader : public AppListItemModelObserver { |
- public: |
- IconLoader(AppListView* owner, |
- AppListItemModel* item, |
- ui::ScaleFactor scale_factor) |
- : owner_(owner), |
- item_(item) { |
- item_->AddObserver(this); |
- |
- // Triggers icon loading for given |scale_factor|. |
- item_->icon().GetRepresentation(scale_factor); |
- } |
- |
- virtual ~IconLoader() { |
- item_->RemoveObserver(this); |
- } |
- |
- private: |
- // AppListItemModelObserver overrides: |
- virtual void ItemIconChanged() OVERRIDE { |
- owner_->OnItemIconLoaded(this); |
- // Note that IconLoader is released here. |
- } |
- virtual void ItemTitleChanged() OVERRIDE {} |
- virtual void ItemHighlightedChanged() OVERRIDE {} |
- |
- AppListView* owner_; |
- AppListItemModel* item_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IconLoader); |
-}; |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// AppListView: |
- |
-AppListView::AppListView(AppListViewDelegate* delegate) |
- : model_(new AppListModel), |
- delegate_(delegate), |
- search_box_view_(NULL), |
- contents_view_(NULL) { |
- if (delegate_) |
- delegate_->SetModel(model_.get()); |
-} |
- |
-AppListView::~AppListView() { |
- // Models are going away, ensure their references are cleared. |
- RemoveAllChildViews(true); |
- pending_icon_loaders_.clear(); |
-} |
- |
-void AppListView::InitAsBubble( |
- gfx::NativeView parent, |
- PaginationModel* pagination_model, |
- views::View* anchor, |
- const gfx::Point& anchor_point, |
- views::BubbleBorder::ArrowLocation arrow_location) { |
- // Starts icon loading early. |
- PreloadIcons(pagination_model, anchor); |
- |
- SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, |
- kInnerPadding, |
- kInnerPadding, |
- kInnerPadding)); |
- |
- search_box_view_ = new SearchBoxView(this); |
- AddChildView(search_box_view_); |
- |
- contents_view_ = new ContentsView(this, pagination_model); |
- AddChildView(contents_view_); |
- |
- search_box_view_->set_contents_view(contents_view_); |
- |
- set_anchor_view(anchor); |
- set_anchor_point(anchor_point); |
- set_color(kContentsBackgroundColor); |
- set_margins(gfx::Insets()); |
- set_move_with_anchor(true); |
- set_parent_window(parent); |
- set_close_on_deactivate(false); |
- set_close_on_esc(false); |
- set_anchor_insets(gfx::Insets(kArrowOffset, kArrowOffset, |
- kArrowOffset, kArrowOffset)); |
- set_shadow(views::BubbleBorder::BIG_SHADOW); |
- views::BubbleDelegateView::CreateBubble(this); |
- SetBubbleArrowLocation(arrow_location); |
- |
-#if defined(USE_AURA) |
- GetBubbleFrameView()->set_background(new AppListBackground( |
- GetBubbleFrameView()->bubble_border()->GetBorderCornerRadius(), |
- search_box_view_)); |
- |
- contents_view_->SetPaintToLayer(true); |
- contents_view_->SetFillsBoundsOpaquely(false); |
- contents_view_->layer()->SetMasksToBounds(true); |
- set_background(NULL); |
-#else |
- set_background(new AppListBackground( |
- GetBubbleFrameView()->bubble_border()->GetBorderCornerRadius(), |
- search_box_view_)); |
-#endif |
- |
- search_box_view_->SetModel(model_->search_box()); |
- contents_view_->SetModel(model_.get()); |
-} |
- |
-void AppListView::SetBubbleArrowLocation( |
- views::BubbleBorder::ArrowLocation arrow_location) { |
- GetBubbleFrameView()->bubble_border()->set_arrow_location(arrow_location); |
- SizeToContents(); // Recalcuates with new border. |
- GetBubbleFrameView()->SchedulePaint(); |
-} |
- |
-void AppListView::SetAnchorPoint(const gfx::Point& anchor_point) { |
- set_anchor_point(anchor_point); |
- SizeToContents(); // Repositions view relative to the anchor. |
-} |
- |
-void AppListView::ShowWhenReady() { |
- if (pending_icon_loaders_.empty()) { |
- icon_loading_wait_timer_.Stop(); |
- GetWidget()->Show(); |
- return; |
- } |
- |
- if (icon_loading_wait_timer_.IsRunning()) |
- return; |
- |
- icon_loading_wait_timer_.Start( |
- FROM_HERE, |
- base::TimeDelta::FromMilliseconds(kMaxIconLoadingWaitTimeInMs), |
- this, &AppListView::OnIconLoadingWaitTimer); |
-} |
- |
-void AppListView::Close() { |
- icon_loading_wait_timer_.Stop(); |
- |
- if (delegate_.get()) |
- delegate_->Dismiss(); |
- else |
- GetWidget()->Close(); |
-} |
- |
-void AppListView::UpdateBounds() { |
- SizeToContents(); |
-} |
- |
-void AppListView::PreloadIcons(PaginationModel* pagination_model, |
- views::View* anchor) { |
- ui::ScaleFactor scale_factor = ui::SCALE_FACTOR_100P; |
- if (anchor && anchor->GetWidget()) { |
- scale_factor = ui::GetScaleFactorForNativeView( |
- anchor->GetWidget()->GetNativeView()); |
- } |
- |
- // |pagination_model| could have -1 as the initial selected page and |
- // assumes first page (i.e. index 0) will be used in this case. |
- const int selected_page = std::max(0, pagination_model->selected_page()); |
- |
- const int tiles_per_page = kPreferredCols * kPreferredRows; |
- const int start_model_index = selected_page * tiles_per_page; |
- const int end_model_index = std::min( |
- static_cast<int>(model_->apps()->item_count()), |
- start_model_index + tiles_per_page); |
- |
- pending_icon_loaders_.clear(); |
- for (int i = start_model_index; i < end_model_index; ++i) { |
- AppListItemModel* item = model_->apps()->GetItemAt(i); |
- if (item->icon().HasRepresentation(scale_factor)) |
- continue; |
- |
- pending_icon_loaders_.push_back(new IconLoader(this, item, scale_factor)); |
- } |
-} |
- |
-void AppListView::OnIconLoadingWaitTimer() { |
- GetWidget()->Show(); |
-} |
- |
-void AppListView::OnItemIconLoaded(IconLoader* loader) { |
- ScopedVector<IconLoader>::iterator it = std::find( |
- pending_icon_loaders_.begin(), pending_icon_loaders_.end(), loader); |
- DCHECK(it != pending_icon_loaders_.end()); |
- pending_icon_loaders_.erase(it); |
- |
- if (pending_icon_loaders_.empty() && icon_loading_wait_timer_.IsRunning()) { |
- icon_loading_wait_timer_.Stop(); |
- GetWidget()->Show(); |
- } |
-} |
- |
-views::View* AppListView::GetInitiallyFocusedView() { |
- return search_box_view_->search_box(); |
-} |
- |
-bool AppListView::WidgetHasHitTestMask() const { |
- return true; |
-} |
- |
-void AppListView::GetWidgetHitTestMask(gfx::Path* mask) const { |
- DCHECK(mask); |
- mask->addRect(gfx::RectToSkRect( |
- GetBubbleFrameView()->GetContentsBounds())); |
-} |
- |
-bool AppListView::AcceleratorPressed(const ui::Accelerator& accelerator) { |
- // The accelerator is added by BubbleDelegateView. |
- if (accelerator.key_code() == ui::VKEY_ESCAPE) { |
- Close(); |
- return true; |
- } |
- |
- return false; |
-} |
- |
-void AppListView::ActivateApp(AppListItemModel* item, int event_flags) { |
- if (delegate_.get()) |
- delegate_->ActivateAppListItem(item, event_flags); |
-} |
- |
-void AppListView::QueryChanged(SearchBoxView* sender) { |
- string16 query; |
- TrimWhitespace(model_->search_box()->text(), TRIM_ALL, &query); |
- bool should_show_search = !query.empty(); |
- contents_view_->ShowSearchResults(should_show_search); |
- |
- if (delegate_.get()) { |
- if (should_show_search) |
- delegate_->StartSearch(); |
- else |
- delegate_->StopSearch(); |
- } |
-} |
- |
-void AppListView::OpenResult(const SearchResult& result, int event_flags) { |
- if (delegate_.get()) |
- delegate_->OpenSearchResult(result, event_flags); |
-} |
- |
-void AppListView::InvokeResultAction(const SearchResult& result, |
- int action_index, |
- int event_flags) { |
- if (delegate_.get()) |
- delegate_->InvokeSearchResultAction(result, action_index, event_flags); |
-} |
- |
-void AppListView::OnWidgetClosing(views::Widget* widget) { |
- BubbleDelegateView::OnWidgetClosing(widget); |
- if (delegate_.get() && widget == GetWidget()) |
- delegate_->ViewClosing(); |
-} |
- |
-void AppListView::OnWidgetActivationChanged(views::Widget* widget, |
- bool active) { |
- // Do not called inherited function as the bubble delegate auto close |
- // functionality is not used. |
- if (delegate_.get() && widget == GetWidget()) |
- delegate_->ViewActivationChanged(active); |
-} |
- |
-} // namespace app_list |