• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_SYSTEM_TRAY_TRAY_DETAILS_VIEW_H_
6 #define ASH_SYSTEM_TRAY_TRAY_DETAILS_VIEW_H_
7 
8 #include "ash/ash_export.h"
9 #include "ash/system/tray/special_popup_row.h"
10 #include "ui/views/view.h"
11 
12 namespace views {
13 class ScrollView;
14 }
15 
16 namespace ash {
17 
18 class SystemTrayItem;
19 
20 namespace internal {
21 
22 class FixedSizedScrollView;
23 class ScrollBorder;
24 class ViewClickListener;
25 
26 class ASH_EXPORT TrayDetailsView : public views::View {
27  public:
28   explicit TrayDetailsView(SystemTrayItem* owner);
29   virtual ~TrayDetailsView();
30 
31   // Creates a row with special highlighting etc. This is typically the
32   // bottom-most row in the popup.
33   void CreateSpecialRow(int string_id, ViewClickListener* listener);
34 
35   // Creates a scrollable list. The list has a border at the bottom if there is
36   // any other view between the list and the footer row at the bottom.
37   void CreateScrollableList();
38 
39   // Adds a separator in scrollable list.
40   void AddScrollSeparator();
41 
42   // Removes (and destroys) all child views.
43   void Reset();
44 
45   // Transition to default view from details view. If |footer_| has focus before
46   // transition, the default view should focus on the owner of this details
47   // view.
48   void TransitionToDefaultView();
49 
owner()50   SystemTrayItem* owner() const { return owner_; }
footer()51   SpecialPopupRow* footer() const { return footer_; }
scroller()52   FixedSizedScrollView* scroller() const { return scroller_; }
scroll_content()53   views::View* scroll_content() const { return scroll_content_; }
54 
55  protected:
56   // Overridden from views::View.
57   virtual void Layout() OVERRIDE;
58   virtual void OnPaintBorder(gfx::Canvas* canvas) OVERRIDE;
59 
60  private:
61   SystemTrayItem* owner_;
62   SpecialPopupRow* footer_;
63   FixedSizedScrollView* scroller_;
64   views::View* scroll_content_;
65   ScrollBorder* scroll_border_;
66 
67   DISALLOW_COPY_AND_ASSIGN(TrayDetailsView);
68 };
69 
70 }  // namespace internal
71 }  // namespace ash
72 
73 #endif  // ASH_SYSTEM_TRAY_TRAY_DETAILS_VIEW_H_
74