Home | History | Annotate | Download | only in ime
      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