C++程序  |  99行  |  2.52 KB

// 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_