// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_UPDATE_VIEW_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_UPDATE_VIEW_H_
#pragma once
#include "views/view.h"
namespace views {
class Label;
class ProgressBar;
class Throbber;
} // namespace views
namespace chromeos {
class ScreenObserver;
class UpdateController;
// View for the network selection/initial welcome screen.
class UpdateView : public views::View {
public:
explicit UpdateView(ScreenObserver* observer);
virtual ~UpdateView();
void Init();
void Reset();
void UpdateLocalizedStrings();
// Sets update controller.
void set_controller(UpdateController* controller) {
controller_ = controller;
}
// Advances view's progress bar. Maximum progress is 100.
void AddProgress(int progress);
// Sets the current value for the progress bar. Maximum progress is 100.
void SetProgress(int progress);
// Shows label with instructions for user to do a manual reboot.
// Usually is not called since we rely on API that will reboot after update.
void ShowManualRebootInfo();
// Shows label for "Preparing updates" state.
void ShowPreparingUpdatesInfo(bool visible);
// Whether curtain window with throbber and label in the center should
// be shown.
void ShowCurtain(bool show_curtain);
// views::View implementation:
virtual void Layout();
private:
// Creates Label control and adds it as a child.
void InitLabel(views::Label** label);
// Updates visibility of the elements.
void UpdateVisibility();
// Keyboard accelerator to allow cancelling update by hitting escape.
views::Accelerator escape_accelerator_;
// Dialog controls.
views::Label* installing_updates_label_;
views::Label* preparing_updates_label_;
views::Label* reboot_label_;
views::Label* manual_reboot_label_;
views::Label* escape_to_skip_label_;
views::ProgressBar* progress_bar_;
// Curtain views.
views::Label* checking_label_;
views::Throbber* throbber_;
// Show curtain view?
bool show_curtain_;
// Show manual reboot label?
bool show_manual_reboot_label_;
// Show preparing updates label?
bool show_preparing_updates_label_;
// Notifications receiver.
chromeos::ScreenObserver* observer_;
// Update controller.
chromeos::UpdateController* controller_;
DISALLOW_COPY_AND_ASSIGN(UpdateView);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_UPDATE_VIEW_H_