folder_header_view.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright (c) 2013 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 UI_APP_LIST_VIEWS_FOLDER_HEADER_VIEW_H_ 6#define UI_APP_LIST_VIEWS_FOLDER_HEADER_VIEW_H_ 7 8#include <string> 9 10#include "ui/app_list/app_list_item_observer.h" 11#include "ui/views/controls/button/button.h" 12#include "ui/views/controls/textfield/textfield_controller.h" 13#include "ui/views/view.h" 14 15namespace views { 16class ImageButton; 17} // namespace views 18 19namespace app_list { 20 21class AppListFolderItem; 22class AppListFolderView; 23class FolderHeaderViewDelegate; 24 25// FolderHeaderView contains a back button and an editable folder name field. 26class FolderHeaderView : public views::View, 27 public views::TextfieldController, 28 public views::ButtonListener, 29 public AppListItemObserver { 30 public: 31 explicit FolderHeaderView(FolderHeaderViewDelegate* delegate); 32 virtual ~FolderHeaderView(); 33 34 void SetFolderItem(AppListFolderItem* folder_item); 35 void UpdateFolderNameVisibility(bool visible); 36 void OnFolderItemRemoved(); 37 38 // Overridden from views::View: 39 virtual gfx::Size GetPreferredSize() OVERRIDE; 40 41 private: 42 class FolderNameView; 43 44 // Updates UI. 45 void Update(); 46 47 // views::View overrides: 48 virtual void Layout() OVERRIDE; 49 virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; 50 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 51 52 // views::TextfieldController overrides: 53 virtual void ContentsChanged(views::Textfield* sender, 54 const base::string16& new_contents) OVERRIDE; 55 56 // views::ButtonListener overrides: 57 virtual void ButtonPressed(views::Button* sender, 58 const ui::Event& event) OVERRIDE; 59 60 // AppListItemObserver overrides: 61 virtual void ItemIconChanged() OVERRIDE; 62 virtual void ItemNameChanged() OVERRIDE; 63 virtual void ItemHighlightedChanged() OVERRIDE; 64 virtual void ItemIsInstallingChanged() OVERRIDE; 65 virtual void ItemPercentDownloadedChanged() OVERRIDE; 66 67 AppListFolderItem* folder_item_; // Not owned. 68 69 views::ImageButton* back_button_; // Owned by views hierarchy. 70 FolderNameView* folder_name_view_; // Owned by views hierarchy. 71 72 FolderHeaderViewDelegate* delegate_; 73 74 bool folder_name_visible_; 75 76 DISALLOW_COPY_AND_ASSIGN(FolderHeaderView); 77}; 78 79} // namespace app_list 80 81#endif // UI_APP_LIST_VIEWS_FOLDER_HEADER_VIEW_H_ 82