// Copyright 2014 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 ATHENA_HOME_PUBLIC_HOME_CARD_H_ #define ATHENA_HOME_PUBLIC_HOME_CARD_H_ #include "athena/athena_export.h" #include "base/memory/scoped_ptr.h" namespace gfx { class Rect; } namespace athena { class AppModelBuilder; class SearchControllerFactory; class ATHENA_EXPORT HomeCard { public: enum State { // HomeCard is not visible. HIDDEN, // HomeCard is visible in the center of the screen as a normal mode. VISIBLE_CENTERED, // HomeCard is visible smaller at the bottom of the screen as a supplemental // widget. VISIBLE_BOTTOM, // HomeCard is minimized (i.e. a small UI element is displayed on screen // that the user can interact with to bring up the BOTTOM or CENTERED view). VISIBLE_MINIMIZED, }; // Creates/deletes/gets the singleton object of the HomeCard // implementation. Takes the ownership of |model_builder|. static HomeCard* Create(scoped_ptr model_builder, scoped_ptr search_factory); static void Shutdown(); static HomeCard* Get(); virtual ~HomeCard() {} // Updates/gets the current state of the home card. virtual void SetState(State state) = 0; virtual State GetState() = 0; // Called when the virtual keyboard changed has changed to |bounds|. An empty // |bounds| indicates that the virtual keyboard is not visible anymore. virtual void UpdateVirtualKeyboardBounds( const gfx::Rect& bounds) = 0; }; } // namespace athena #endif // ATHENA_HOME_PUBLIC_HOME_CARD_H_