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