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 12namespace views { 13class ScrollView; 14} 15 16namespace ash { 17 18class SystemTrayItem; 19 20namespace internal { 21 22class FixedSizedScrollView; 23class ScrollBorder; 24class ViewClickListener; 25 26class 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 50 SystemTrayItem* owner() const { return owner_; } 51 SpecialPopupRow* footer() const { return footer_; } 52 FixedSizedScrollView* scroller() const { return scroller_; } 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