update_view.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/update_view.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/l10n_util.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/resource_bundle.h" 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/chromeos/login/helper.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/rounded_rect_painter.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/update_screen.h" 143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/chromeos/login/wizard_accessibility_helper.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/chromium_strings.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/border.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/label.h" 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/progress_bar.h" 203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "views/controls/throbber.h" 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/focus/focus_manager.h" 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/widget/widget.h" 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::Background; 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::Label; 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::View; 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::Widget; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// TODO(nkostylev): Switch to GridLayout. 323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Y offset for the 'installing updates' label. 343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kInstallingUpdatesLabelYBottomFromProgressBar = 18; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Y offset for the progress bar. 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kProgressBarY = 130; 373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Y offset for the 'computer will restart' label. 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kRebootLabelYFromProgressBar = 55; 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Y offset for the 'ESCAPE to skip' label. 403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kEscapeToSkipLabelY = 48; 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Progress bar width. 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kProgressBarWidth = 420; 433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Progress bar height. 443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kProgressBarHeight = 18; 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Horizontal spacing (ex. min left and right margins for label on the screen). 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kHorizontalSpacing = 65; 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Horizontal spacing between spinner and label on the curtain screen. 483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kBetweenSpacing = 25; 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Label color. 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst SkColor kLabelColor = 0xFF000000; 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst SkColor kSkipLabelColor = 0xFFAA0000; 533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst SkColor kManualRebootLabelColor = 0xFFAA0000; 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochUpdateView::UpdateView(chromeos::ScreenObserver* observer) 603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick : escape_accelerator_(app::VKEY_ESCAPE, false, false, false), 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch installing_updates_label_(NULL), 623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick reboot_label_(NULL), 633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_(NULL), 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch progress_bar_(NULL), 653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick show_curtain_(true), 663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick show_manual_reboot_label_(false), 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch observer_(observer) { 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochUpdateView::~UpdateView() { 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::Init() { 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Use rounded-rect background. 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch views::Painter* painter = chromeos::CreateWizardPainter( 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &chromeos::BorderDefinition::kScreenBorder); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch set_background(views::Background::CreateBackgroundPainter(true, painter)); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch InitLabel(&installing_updates_label_); 803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick InitLabel(&reboot_label_); 813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick InitLabel(&manual_reboot_label_); 823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SetVisible(false); 833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SetColor(kManualRebootLabelColor); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch progress_bar_ = new views::ProgressBar(); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddChildView(progress_bar_); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Curtain view. 893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick InitLabel(&checking_label_); 903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick throbber_ = CreateDefaultThrobber(); 913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick AddChildView(throbber_); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if !defined(OFFICIAL_BUILD) 943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick InitLabel(&escape_to_skip_label_); 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch escape_to_skip_label_->SetColor(kSkipLabelColor); 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch escape_to_skip_label_->SetText( 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch L"Press ESCAPE to skip (Non-official builds only)"); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UpdateLocalizedStrings(); 1013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UpdateVisibility(); 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::Reset() { 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch progress_bar_->SetProgress(0); 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if !defined(OFFICIAL_BUILD) 1073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ResetAccelerators(); 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddAccelerator(escape_accelerator_); 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::UpdateLocalizedStrings() { 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch installing_updates_label_->SetText( 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch l10n_util::GetStringF(IDS_INSTALLING_UPDATE, 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch l10n_util::GetString(IDS_PRODUCT_OS_NAME))); 1163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick reboot_label_->SetText(l10n_util::GetString(IDS_INSTALLING_UPDATE_DESC)); 1173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SetText(l10n_util::GetString(IDS_UPDATE_COMPLETED)); 1183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick checking_label_->SetText(l10n_util::GetString(IDS_CHECKING_FOR_UPDATES)); 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::AddProgress(int ticks) { 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch progress_bar_->AddProgress(ticks); 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::SetProgress(int progress) { 1263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick progress_bar_->SetProgress(progress); 1273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 1283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::ShowManualRebootInfo() { 1303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick show_manual_reboot_label_ = true; 1313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UpdateVisibility(); 1323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 1333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::ShowCurtain(bool show_curtain) { 1353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (show_curtain_ != show_curtain) { 1363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick show_curtain_ = show_curtain; 1373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UpdateVisibility(); 1383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 1393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 1403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Sets the bounds of the view, placing center of the view at the given 1423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// coordinates (|x| and |y|). 1433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickstatic void setViewBounds(views::View* view, int x, int y) { 1443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int preferred_width = view->GetPreferredSize().width(); 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int preferred_height = view->GetPreferredSize().height(); 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch view->SetBounds( 1473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick x - preferred_width / 2, 1483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick y - preferred_height / 2, 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch preferred_width, 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch preferred_height); 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::Layout() { 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int max_width = width() - GetInsets().width() - 2 * kHorizontalSpacing; 1553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int right_margin = GetInsets().right() + kHorizontalSpacing; 1563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int max_height = height() - GetInsets().height(); 1573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int vertical_center = GetInsets().top() + max_height / 2; 1583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch installing_updates_label_->SizeToFit(max_width); 1603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick reboot_label_->SizeToFit(max_width); 1613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SizeToFit(max_width); 1623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick progress_bar_->SetBounds(right_margin, 1643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick vertical_center - kProgressBarHeight / 2, 1653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick max_width, 1663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick kProgressBarHeight); 1673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick installing_updates_label_->SetX(right_margin); 1693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick installing_updates_label_->SetY( 1703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick progress_bar_->y() - 1713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick kInstallingUpdatesLabelYBottomFromProgressBar - 1723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick installing_updates_label_->height()); 1733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick reboot_label_->SetX(right_margin); 1743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick reboot_label_->SetY( 1753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick progress_bar_->y() + 1763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick progress_bar_->height() + 1773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick kRebootLabelYFromProgressBar); 1783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SetX(reboot_label_->x()); 1793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SetY(reboot_label_->y()); 1803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Curtain layout is independed. 1813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int x_center = width() / 2; 1823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int throbber_width = throbber_->GetPreferredSize().width(); 1833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick checking_label_->SizeToFit(max_width - throbber_width - kBetweenSpacing); 1843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int checking_label_width = checking_label_->GetPreferredSize().width(); 1853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick int space_half = (kBetweenSpacing + 1) / 2; 1863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick setViewBounds( 1873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick throbber_, x_center - checking_label_width / 2 - space_half, 1883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick vertical_center); 1893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick setViewBounds( 1903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick checking_label_, x_center + (throbber_width + 1) / 2 + space_half, 1913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick vertical_center); 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if !defined(OFFICIAL_BUILD) 1933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick escape_to_skip_label_->SizeToFit(max_width); 1943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick escape_to_skip_label_->SetX(right_margin); 1953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick escape_to_skip_label_->SetY(kEscapeToSkipLabelY); 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SchedulePaint(); 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool UpdateView::AcceleratorPressed(const views::Accelerator& a) { 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if !defined(OFFICIAL_BUILD) 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RemoveAccelerator(escape_accelerator_); 2033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (a.GetKeyCode() == app::VKEY_ESCAPE) { 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (controller_ != NULL) { 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch controller_->CancelUpdate(); 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return true; 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return false; 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::ViewHierarchyChanged(bool is_add, View* parent, View* child) { 2143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (is_add && this == child) 2153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick WizardAccessibilityHelper::GetInstance()->MaybeEnableAccessibility(this); 2163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 2173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::InitLabel(views::Label** label) { 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch *label = new views::Label(); 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*label)->SetColor(kLabelColor); 2213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick (*label)->SetHorizontalAlignment(views::Label::ALIGN_LEFT); 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*label)->SetMultiLine(true); 2233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 2243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ResourceBundle& res_bundle = ResourceBundle::GetSharedInstance(); 225731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick gfx::Font label_font = res_bundle.GetFont(ResourceBundle::MediumFont); 2263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick (*label)->SetFont(label_font); 2273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AddChildView(*label); 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::UpdateVisibility() { 2323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick installing_updates_label_->SetVisible( 2333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick !show_curtain_&& !show_manual_reboot_label_); 2343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick reboot_label_->SetVisible(!show_curtain_&& !show_manual_reboot_label_); 2353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manual_reboot_label_->SetVisible(!show_curtain_ && show_manual_reboot_label_); 2363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick progress_bar_->SetVisible(!show_curtain_); 2373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 2383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick checking_label_->SetVisible(show_curtain_); 2393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick throbber_->SetVisible(show_curtain_); 2403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (show_curtain_) { 2413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick throbber_->Start(); 2423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } else { 2433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick throbber_->Stop(); 2443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 2453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 2463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 248