1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/app_list/views/contents_switcher_view.h" 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/app_list/views/contents_view.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/base/resource/resource_bundle.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/views/controls/button/custom_button.h" 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ui/views/controls/button/image_button.h" 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/views/layout/box_layout.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace app_list { 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace { 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const int kButtonSpacing = 4; 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst int kMinimumHeight = 39; 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)ContentsSwitcherView::ContentsSwitcherView(ContentsView* contents_view) 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : contents_view_(contents_view) { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch views::BoxLayout* layout = new views::BoxLayout( 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch views::BoxLayout::kHorizontal, 0, 0, kButtonSpacing); 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch layout->set_main_axis_alignment(views::BoxLayout::MAIN_AXIS_ALIGNMENT_CENTER); 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci layout->set_minimum_cross_axis_size(kMinimumHeight); 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SetLayoutManager(layout); 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)ContentsSwitcherView::~ContentsSwitcherView() {} 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void ContentsSwitcherView::AddSwitcherButton(int resource_id, int page_index) { 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) views::ImageButton* button = new views::ImageButton(this); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci button->SetMinimumImageSize(gfx::Size(kMinimumHeight, kMinimumHeight)); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci button->SetImageAlignment(views::ImageButton::ALIGN_CENTER, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci views::ImageButton::ALIGN_MIDDLE); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci button->SetImage( 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci views::CustomButton::STATE_NORMAL, 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id)); 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) button->set_tag(page_index); 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AddChildView(button); 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ContentsSwitcherView::ButtonPressed(views::Button* sender, 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const ui::Event& event) { 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) contents_view_->SetActivePage(sender->tag()); 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ContentsSwitcherView::TotalPagesChanged() { 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ContentsSwitcherView::SelectedPageChanged(int old_selected, 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int new_selected) { 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(mgiuca): Visually indicate which page is now selected. 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ContentsSwitcherView::TransitionStarted() { 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ContentsSwitcherView::TransitionChanged() { 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Change the indicator during a launcher page transition. 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const PaginationModel& pm = contents_view_->pagination_model(); 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int old_selected = pm.selected_page(); 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int new_selected = pm.transition().target_page; 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (pm.IsRevertingCurrentTransition()) { 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Swap the direction if the transition is reversed. 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch old_selected = pm.transition().target_page; 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new_selected = pm.selected_page(); 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SelectedPageChanged(old_selected, new_selected); 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace app_list 77