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