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 ASH_IME_INFOLIST_WINDOW_H_ 6 #define ASH_IME_INFOLIST_WINDOW_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "ash/ash_export.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "base/strings/string16.h" 14 #include "base/timer/timer.h" 15 #include "ui/base/ime/infolist_entry.h" 16 #include "ui/gfx/font_list.h" 17 #include "ui/views/bubble/bubble_delegate.h" 18 19 namespace ash { 20 namespace ime { 21 22 class InfolistEntryView; 23 24 // A widget delegate representing the infolist window UI. 25 class ASH_EXPORT InfolistWindow : public views::BubbleDelegateView { 26 public: 27 InfolistWindow(views::View* candidate_window, 28 const std::vector<ui::InfolistEntry>& entries); 29 virtual ~InfolistWindow(); 30 void InitWidget(); 31 32 // Updates infolist contents with |entries|. 33 void Relayout(const std::vector<ui::InfolistEntry>& entries); 34 35 // Show/hide itself with a delay. 36 void ShowWithDelay(); 37 void HideWithDelay(); 38 39 // Show/hide without delays. 40 void ShowImmediately(); 41 void HideImmediately(); 42 43 private: 44 // views::WidgetDelegate implementation. 45 virtual void WindowClosing() OVERRIDE; 46 47 // The list of visible entries. Owned by views hierarchy. 48 std::vector<InfolistEntryView*> entry_views_; 49 50 // Information title font. 51 gfx::FontList title_font_list_; 52 53 // Information description font. 54 gfx::FontList description_font_list_; 55 56 base::OneShotTimer<views::Widget> show_hide_timer_; 57 58 DISALLOW_COPY_AND_ASSIGN(InfolistWindow); 59 }; 60 61 } // namespace ime 62 } // namespace ash 63 64 #endif // ASH_IME_INFOLIST_WINDOW_H_ 65