// Copyright 2020 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 ASH_SYSTEM_PHONEHUB_PHONE_HUB_INTERSTITIAL_VIEW_H_
#define ASH_SYSTEM_PHONEHUB_PHONE_HUB_INTERSTITIAL_VIEW_H_

#include <vector>

#include "ash/ash_export.h"
#include "ash/system/phonehub/phone_hub_content_view.h"
#include "ui/views/controls/progress_bar.h"
#include "ui/views/metadata/metadata_header_macros.h"
#include "ui/views/view.h"

namespace views {
class Button;
class ImageView;
class ImageSkia;
class Label;
class ProgressBar;
}  // namespace views

namespace ash {

// A generic view to display interstitial pages for the Phone Hub feature with
// image, text and buttons in a customized layout. It is reused by the
// onboarding, loading, disconnected/reconnecting and error state UI.
class ASH_EXPORT PhoneHubInterstitialView : public PhoneHubContentView {
 public:
  METADATA_HEADER(PhoneHubInterstitialView);

  explicit PhoneHubInterstitialView(bool show_progress, bool show_image = true);
  PhoneHubInterstitialView(const PhoneHubInterstitialView&) = delete;
  PhoneHubInterstitialView& operator=(const PhoneHubInterstitialView&) = delete;
  ~PhoneHubInterstitialView() override;

  void SetImage(const gfx::ImageSkia& image);
  void SetTitle(const std::u16string& title);
  void SetDescription(const std::u16string& desc);
  void AddButton(std::unique_ptr<views::Button> button);

 private:
  // A progress bar will be shown under the title row if |show_progress| is
  // true.
  views::ProgressBar* progress_bar_ = nullptr;
  views::ImageView* image_ = nullptr;
  views::Label* title_ = nullptr;
  views::Label* description_ = nullptr;
  views::View* button_container_ = nullptr;
};

}  // namespace ash

#endif  // ASH_SYSTEM_PHONEHUB_PHONE_HUB_INTERSTITIAL_VIEW_H_
