// 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 ASH_IME_INFOLIST_WINDOW_H_ #define ASH_IME_INFOLIST_WINDOW_H_ #include <string> #include <vector> #include "ash/ash_export.h" #include "base/memory/scoped_ptr.h" #include "base/strings/string16.h" #include "base/timer/timer.h" #include "ui/base/ime/infolist_entry.h" #include "ui/gfx/font_list.h" #include "ui/views/bubble/bubble_delegate.h" namespace ash { namespace ime { class InfolistEntryView; // A widget delegate representing the infolist window UI. class ASH_EXPORT InfolistWindow : public views::BubbleDelegateView { public: InfolistWindow(views::View* candidate_window, const std::vector<ui::InfolistEntry>& entries); virtual ~InfolistWindow(); void InitWidget(); // Updates infolist contents with |entries|. void Relayout(const std::vector<ui::InfolistEntry>& entries); // Show/hide itself with a delay. void ShowWithDelay(); void HideWithDelay(); // Show/hide without delays. void ShowImmediately(); void HideImmediately(); private: // views::WidgetDelegate implementation. virtual void WindowClosing() OVERRIDE; // The list of visible entries. Owned by views hierarchy. std::vector<InfolistEntryView*> entry_views_; // Information title font. gfx::FontList title_font_list_; // Information description font. gfx::FontList description_font_list_; base::OneShotTimer<views::Widget> show_hide_timer_; DISALLOW_COPY_AND_ASSIGN(InfolistWindow); }; } // namespace ime } // namespace ash #endif // ASH_IME_INFOLIST_WINDOW_H_