app_list_win.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_APP_LIST_WIN_APP_LIST_WIN_H_
6#define CHROME_BROWSER_UI_VIEWS_APP_LIST_WIN_APP_LIST_WIN_H_
7
8#include "base/callback_forward.h"
9#include "chrome/browser/ui/app_list/app_list.h"
10#include "chrome/browser/ui/views/app_list/win/activation_tracker_win.h"
11#include "ui/app_list/views/app_list_view.h"
12
13// Responsible for positioning, hiding and showing an AppListView on Windows.
14// This includes watching window activation/deactivation messages to determine
15// if the user has clicked away from it.
16class AppListWin : public AppList {
17 public:
18  AppListWin(app_list::AppListView* view,
19             const base::Closure& on_should_dismiss);
20  virtual ~AppListWin();
21
22  // AppList overrides.
23  virtual void Show() OVERRIDE;
24  virtual void Hide() OVERRIDE;
25  virtual void MoveNearCursor() OVERRIDE;
26  virtual bool IsVisible() OVERRIDE;
27  virtual void Prerender() OVERRIDE;
28  virtual void RegainNextLostFocus() OVERRIDE;
29  virtual gfx::NativeWindow GetWindow() OVERRIDE;
30  virtual void SetProfile(Profile* profile) OVERRIDE;
31
32  app_list::AppListModel* model() {
33    return view_->model();
34  }
35
36 private:
37  // Weak pointer. The view manages its own lifetime.
38  app_list::AppListView* view_;
39  ActivationTrackerWin activation_tracker_;
40  bool window_icon_updated_;
41
42  DISALLOW_COPY_AND_ASSIGN(AppListWin);
43};
44
45#endif  // CHROME_BROWSER_UI_VIEWS_APP_LIST_WIN_APP_LIST_WIN_H_
46