| Index: ui/app_list/shower/app_list_shower_impl.h
|
| diff --git a/ui/app_list/shower/app_list_shower_impl.h b/ui/app_list/shower/app_list_shower_impl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..85cce8567e34a7176f25982daa75d289a45ad98c
|
| --- /dev/null
|
| +++ b/ui/app_list/shower/app_list_shower_impl.h
|
| @@ -0,0 +1,118 @@
|
| +// Copyright 2016 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.
|
| +
|
| +#ifndef UI_APP_LIST_SHOWER_APP_LIST_SHOWER_IMPL_H_
|
| +#define UI_APP_LIST_SHOWER_APP_LIST_SHOWER_IMPL_H_
|
| +
|
| +#include "base/compiler_specific.h"
|
| +#include "base/macros.h"
|
| +#include "ui/app_list/pagination_model_observer.h"
|
| +#include "ui/app_list/shower/app_list_shower.h"
|
| +#include "ui/app_list/shower/app_list_shower_delegate.h"
|
| +#include "ui/aura/client/focus_change_observer.h"
|
| +#include "ui/aura/window_observer.h"
|
| +#include "ui/compositor/layer_animation_observer.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
| +#include "ui/views/widget/widget_observer.h"
|
| +
|
| +namespace app_list {
|
| +class AppListView;
|
| +class AppListViewDelegate;
|
| +class AppListShowerDelegateFactory;
|
| +
|
| +namespace test {
|
| +class AppListShowerImplTestApi;
|
| +}
|
| +
|
| +class AppListShowerImplTest;
|
| +class AppListViewDelegate;
|
| +
|
| +// Manages app list UI. Creates AppListView and schedules showing/hiding
|
| +// animation. While the UI is visible, it monitors things such as app list
|
| +// activation state to auto dismiss the UI. Delegates the responsibility
|
| +// for laying out the app list UI to ash::AppListLayoutDelegate.
|
| +class APP_LIST_SHOWER_EXPORT AppListShowerImpl
|
| + : public AppListShower,
|
| + public aura::client::FocusChangeObserver,
|
| + public aura::WindowObserver,
|
| + public ui::ImplicitAnimationObserver,
|
| + public views::WidgetObserver,
|
| + public PaginationModelObserver {
|
| + public:
|
| + explicit AppListShowerImpl(AppListShowerDelegateFactory* factory);
|
| + ~AppListShowerImpl() override;
|
| +
|
| + // Returns app list window or NULL if it is not visible.
|
| + aura::Window* GetWindow();
|
| +
|
| + // Returns app list view if one exists, or NULL otherwise.
|
| + AppListView* GetView() { return view_; }
|
| +
|
| + // AppListShower:
|
| + void Show(aura::Window* window) override;
|
| + void Dismiss() override;
|
| + bool IsVisible() const override;
|
| + bool GetTargetVisibility() const override;
|
| +
|
| + private:
|
| + friend class test::AppListShowerImplTestApi;
|
| +
|
| + // Sets the app list view and attempts to show it.
|
| + void SetView(AppListView* view);
|
| +
|
| + // Forgets the view.
|
| + void ResetView();
|
| +
|
| + // Starts show/hide animation.
|
| + void ScheduleAnimation();
|
| +
|
| + // aura::client::FocusChangeObserver overrides:
|
| + void OnWindowFocused(aura::Window* gained_focus,
|
| + aura::Window* lost_focus) override;
|
| +
|
| + // aura::WindowObserver overrides:
|
| + void OnWindowBoundsChanged(aura::Window* root,
|
| + const gfx::Rect& old_bounds,
|
| + const gfx::Rect& new_bounds) override;
|
| +
|
| + // ui::ImplicitAnimationObserver overrides:
|
| + void OnImplicitAnimationsCompleted() override;
|
| +
|
| + // views::WidgetObserver overrides:
|
| + void OnWidgetDestroying(views::Widget* widget) override;
|
| +
|
| + // PaginationModelObserver overrides:
|
| + void TotalPagesChanged() override;
|
| + void SelectedPageChanged(int old_selected, int new_selected) override;
|
| + void TransitionStarted() override;
|
| + void TransitionChanged() override;
|
| +
|
| + // Not owned
|
| + AppListShowerDelegateFactory* const factory_;
|
| +
|
| + // Responsible for laying out the app list UI.
|
| + scoped_ptr<AppListShowerDelegate> shower_delegate_;
|
| +
|
| + // Whether we should show or hide app list widget.
|
| + bool is_visible_ = false;
|
| +
|
| + // The AppListView this class manages, owned by its widget.
|
| + AppListView* view_ = nullptr;
|
| +
|
| + // The current page of the AppsGridView of |view_|. This is stored outside of
|
| + // the view's PaginationModel, so that it persists when the view is destroyed.
|
| + int current_apps_page_ = -1;
|
| +
|
| + // Cached bounds of |view_| for snapping back animation after over-scroll.
|
| + gfx::Rect view_bounds_;
|
| +
|
| + // Whether should schedule snap back animation.
|
| + bool should_snap_back_ = false;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AppListShowerImpl);
|
| +};
|
| +
|
| +} // namespace app_list
|
| +
|
| +#endif // UI_APP_LIST_SHOWER_APP_LIST_SHOWER_IMPL_H_
|
|
|