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