// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_APP_LIST_PAGE_SWITCHER_H_ #define UI_APP_LIST_PAGE_SWITCHER_H_ #pragma once #include "base/basictypes.h" #include "ui/app_list/pagination_model_observer.h" #include "ui/views/controls/button/button.h" #include "ui/views/view.h" namespace app_list { class PaginationModel; // PageSwitcher represents its underlying PaginationModel with a button strip. // Each page in the PageinationModel has a button in the strip and when the // button is clicked, the corresponding page becomes selected. class PageSwitcher : public views::View, public views::ButtonListener, public PaginationModelObserver { public: explicit PageSwitcher(PaginationModel* model); virtual ~PageSwitcher(); private: // Overridden from views::View: virtual gfx::Size GetPreferredSize() OVERRIDE; virtual void Layout() OVERRIDE; // Overridden from views::ButtonListener: virtual void ButtonPressed(views::Button* sender, const views::Event& event) OVERRIDE; // Overridden from PaginationModelObserver: virtual void TotalPagesChanged() OVERRIDE; virtual void SelectedPageChanged(int old_selected, int new_selected) OVERRIDE; PaginationModel* model_; // Owned by parent AppListView. views::View* buttons_; // Owned by views hierarchy. DISALLOW_COPY_AND_ASSIGN(PageSwitcher); }; } // namespace app_list #endif // UI_APP_LIST_PAGE_SWITCHER_H_