1// Copyright 2014 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 ATHENA_HOME_PUBLIC_HOME_CARD_H_
6#define ATHENA_HOME_PUBLIC_HOME_CARD_H_
7
8#include "athena/athena_export.h"
9
10namespace app_list {
11class SearchProvider;
12}
13
14namespace gfx {
15class Rect;
16}
17
18namespace athena {
19class AppModelBuilder;
20
21class ATHENA_EXPORT HomeCard {
22 public:
23  enum State {
24    // HomeCard is not visible.
25    HIDDEN,
26
27    // HomeCard is visible in the center of the screen as a normal mode.
28    VISIBLE_CENTERED,
29
30    // HomeCard is visible smaller at the bottom of the screen as a supplemental
31    // widget.
32    VISIBLE_BOTTOM,
33
34    // HomeCard is minimized (i.e. a small UI element is displayed on screen
35    // that the user can interact with to bring up the BOTTOM or CENTERED view).
36    VISIBLE_MINIMIZED,
37  };
38
39  // Creates/deletes/gets the singleton object of the HomeCard
40  // implementation. Takes the ownership of |model_builder|.
41  static HomeCard* Create(AppModelBuilder* model_builder);
42  static void Shutdown();
43  static HomeCard* Get();
44
45  virtual ~HomeCard() {}
46
47  // Updates/gets the current state of the home card.
48  virtual void SetState(State state) = 0;
49  virtual State GetState() = 0;
50
51  // Registers a search_provider to the HomeCard. Receiver will take
52  // the ownership of the specified provider.
53  virtual void RegisterSearchProvider(
54      app_list::SearchProvider* search_provider) = 0;
55
56  // Called when the virtual keyboard changed has changed to |bounds|. An empty
57  // |bounds| indicates that the virtual keyboard is not visible anymore.
58  virtual void UpdateVirtualKeyboardBounds(
59      const gfx::Rect& bounds) = 0;
60};
61
62}  // namespace athena
63
64#endif  // ATHENA_HOME_PUBLIC_HOME_CARD_H_
65