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
93f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/utf_string_conversions.h"
103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/chromeos/login/helper.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/rounded_rect_painter.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/update_screen.h"
133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/chromeos/login/wizard_accessibility_helper.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/chromium_strings.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h"
1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h"
1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/resource/resource_bundle.h"
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/border.h"
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/label.h"
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/progress_bar.h"
213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "views/controls/throbber.h"
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/focus/focus_manager.h"
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/widget/widget.h"
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::Background;
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::Label;
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::View;
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing views::Widget;
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// TODO(nkostylev): Switch to GridLayout.
333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Y offset for the 'installing updates' label.
353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kInstallingUpdatesLabelYBottomFromProgressBar = 18;
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Y offset for the progress bar.
37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kProgressBarY = 130;
383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Y offset for the 'computer will restart' label.
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kRebootLabelYFromProgressBar = 55;
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Y offset for the 'ESCAPE to skip' label.
413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kEscapeToSkipLabelY = 48;
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Progress bar width.
43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kProgressBarWidth = 420;
443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Progress bar height.
453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kProgressBarHeight = 18;
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Horizontal spacing (ex. min left and right margins for label on the screen).
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickconst int kHorizontalSpacing = 65;
483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Horizontal spacing between spinner and label on the curtain screen.
493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst int kBetweenSpacing = 25;
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Label color.
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst SkColor kLabelColor = 0xFF000000;
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst SkColor kSkipLabelColor = 0xFFAA0000;
543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickconst SkColor kManualRebootLabelColor = 0xFFAA0000;
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos {
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochUpdateView::UpdateView(chromeos::ScreenObserver* observer)
61201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch    : installing_updates_label_(NULL),
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      preparing_updates_label_(NULL),
633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      reboot_label_(NULL),
643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      manual_reboot_label_(NULL),
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      progress_bar_(NULL),
663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      show_curtain_(true),
673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      show_manual_reboot_label_(false),
68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      show_preparing_updates_label_(false),
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      observer_(observer) {
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochUpdateView::~UpdateView() {
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::Init() {
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Use rounded-rect background.
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  views::Painter* painter = chromeos::CreateWizardPainter(
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      &chromeos::BorderDefinition::kScreenBorder);
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  set_background(views::Background::CreateBackgroundPainter(true, painter));
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InitLabel(&installing_updates_label_);
82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  InitLabel(&preparing_updates_label_);
833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitLabel(&reboot_label_);
843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitLabel(&manual_reboot_label_);
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  preparing_updates_label_->SetVisible(false);
863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  manual_reboot_label_->SetVisible(false);
873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  manual_reboot_label_->SetColor(kManualRebootLabelColor);
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  progress_bar_ = new views::ProgressBar();
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  AddChildView(progress_bar_);
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // Curtain view.
933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitLabel(&checking_label_);
943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  throbber_ = CreateDefaultThrobber();
953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  AddChildView(throbber_);
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if !defined(OFFICIAL_BUILD)
983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  InitLabel(&escape_to_skip_label_);
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  escape_to_skip_label_->SetColor(kSkipLabelColor);
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  escape_to_skip_label_->SetText(
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      L"Press ESCAPE to skip (Non-official builds only)");
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
1033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  UpdateLocalizedStrings();
1053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  UpdateVisibility();
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::Reset() {
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  progress_bar_->SetProgress(0);
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::UpdateLocalizedStrings() {
1133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  installing_updates_label_->SetText(UTF16ToWide(l10n_util::GetStringFUTF16(
1143f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen      IDS_INSTALLING_UPDATE,
1153f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen      l10n_util::GetStringUTF16(IDS_PRODUCT_OS_NAME))));
116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  preparing_updates_label_->SetText(
117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      UTF16ToWide(l10n_util::GetStringUTF16(IDS_UPDATE_AVAILABLE)));
1183f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  reboot_label_->SetText(
1193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen      UTF16ToWide(l10n_util::GetStringUTF16(IDS_INSTALLING_UPDATE_DESC)));
1203f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  manual_reboot_label_->SetText(
1213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen      UTF16ToWide(l10n_util::GetStringUTF16(IDS_UPDATE_COMPLETED)));
1223f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  checking_label_->SetText(
1233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen      UTF16ToWide(l10n_util::GetStringUTF16(IDS_CHECKING_FOR_UPDATES)));
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::AddProgress(int ticks) {
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  progress_bar_->AddProgress(ticks);
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
1303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::SetProgress(int progress) {
1313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  progress_bar_->SetProgress(progress);
1323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
1333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::ShowManualRebootInfo() {
1353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  show_manual_reboot_label_ = true;
1363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  UpdateVisibility();
1373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
1383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid UpdateView::ShowPreparingUpdatesInfo(bool visible) {
140ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  show_preparing_updates_label_ = visible;
141ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  UpdateVisibility();
142ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
143ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
1443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::ShowCurtain(bool show_curtain) {
1453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  if (show_curtain_ != show_curtain) {
1463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    show_curtain_ = show_curtain;
1473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    UpdateVisibility();
1483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  }
1493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
1503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Sets the bounds of the view, placing center of the view at the given
1523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// coordinates (|x| and |y|).
1533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickstatic void setViewBounds(views::View* view, int x, int y) {
1543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int preferred_width = view->GetPreferredSize().width();
155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int preferred_height = view->GetPreferredSize().height();
156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  view->SetBounds(
1573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      x - preferred_width / 2,
1583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      y - preferred_height / 2,
159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      preferred_width,
160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      preferred_height);
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::Layout() {
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int max_width = width() - GetInsets().width() - 2 * kHorizontalSpacing;
1653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int right_margin = GetInsets().right() + kHorizontalSpacing;
1663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int max_height = height() - GetInsets().height();
1673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int vertical_center = GetInsets().top() + max_height / 2;
1683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  installing_updates_label_->SizeToFit(max_width);
170ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  preparing_updates_label_->SizeToFit(max_width);
1713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  reboot_label_->SizeToFit(max_width);
1723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  manual_reboot_label_->SizeToFit(max_width);
1733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  progress_bar_->SetBounds(right_margin,
1753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                           vertical_center - kProgressBarHeight / 2,
1763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                           max_width,
1773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                           kProgressBarHeight);
1783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  installing_updates_label_->SetX(right_margin);
1803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  installing_updates_label_->SetY(
1813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      progress_bar_->y() -
1823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      kInstallingUpdatesLabelYBottomFromProgressBar -
1833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      installing_updates_label_->height());
184ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  preparing_updates_label_->SetX(installing_updates_label_->x());
185ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  preparing_updates_label_->SetY(installing_updates_label_->y());
1863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  reboot_label_->SetX(right_margin);
1873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  reboot_label_->SetY(
1883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      progress_bar_->y() +
1893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      progress_bar_->height() +
1903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      kRebootLabelYFromProgressBar);
1913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  manual_reboot_label_->SetX(reboot_label_->x());
1923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  manual_reboot_label_->SetY(reboot_label_->y());
1933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // Curtain layout is independed.
1943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int x_center = width() / 2;
1953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int throbber_width = throbber_->GetPreferredSize().width();
1963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  checking_label_->SizeToFit(max_width - throbber_width - kBetweenSpacing);
1973345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int checking_label_width = checking_label_->GetPreferredSize().width();
1983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  int space_half = (kBetweenSpacing + 1) / 2;
1993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  setViewBounds(
2003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      throbber_, x_center - checking_label_width / 2 - space_half,
2013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      vertical_center);
2023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  setViewBounds(
2033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      checking_label_, x_center + (throbber_width + 1) / 2 + space_half,
2043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      vertical_center);
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if !defined(OFFICIAL_BUILD)
2063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  escape_to_skip_label_->SizeToFit(max_width);
2073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  escape_to_skip_label_->SetX(right_margin);
2083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  escape_to_skip_label_->SetY(kEscapeToSkipLabelY);
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SchedulePaint();
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid UpdateView::InitLabel(views::Label** label) {
214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  *label = new views::Label();
215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  (*label)->SetColor(kLabelColor);
2163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  (*label)->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  (*label)->SetMultiLine(true);
2183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
2193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ResourceBundle& res_bundle = ResourceBundle::GetSharedInstance();
220731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  gfx::Font label_font = res_bundle.GetFont(ResourceBundle::MediumFont);
2213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  (*label)->SetFont(label_font);
2223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  AddChildView(*label);
224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
2263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid UpdateView::UpdateVisibility() {
227ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  installing_updates_label_->SetVisible(!show_curtain_ &&
228ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                        !show_manual_reboot_label_ &&
229ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                        !show_preparing_updates_label_);
230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  preparing_updates_label_->SetVisible(!show_curtain_ &&
231ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                       !show_manual_reboot_label_ &&
232ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                       show_preparing_updates_label_);
2333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  reboot_label_->SetVisible(!show_curtain_&& !show_manual_reboot_label_);
2343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  manual_reboot_label_->SetVisible(!show_curtain_ && show_manual_reboot_label_);
2353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  progress_bar_->SetVisible(!show_curtain_);
2363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
2373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  checking_label_->SetVisible(show_curtain_);
2383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  throbber_->SetVisible(show_curtain_);
2393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  if (show_curtain_) {
2403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    throbber_->Start();
2413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  } else {
2423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    throbber_->Stop();
2433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  }
2443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
2453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace chromeos
247