123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // Copyright 2017 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.
- #include "ash/session/teleport_warning_dialog.h"
- #include "ash/shell.h"
- #include "ash/strings/grit/ash_strings.h"
- #include "base/bind.h"
- #include "ui/base/l10n/l10n_util.h"
- #include "ui/base/resource/resource_bundle.h"
- #include "ui/views/border.h"
- #include "ui/views/controls/button/checkbox.h"
- #include "ui/views/controls/label.h"
- #include "ui/views/layout/box_layout.h"
- #include "ui/views/layout/layout_provider.h"
- #include "ui/views/widget/widget.h"
- namespace ash {
- namespace {
- // Default width of the dialog.
- constexpr int kDefaultWidth = 448;
- } // namespace
- TeleportWarningDialog::TeleportWarningDialog(OnAcceptCallback callback)
- : never_show_again_checkbox_(new views::Checkbox(
- l10n_util::GetStringUTF16(IDS_ASH_DIALOG_DONT_SHOW_AGAIN))),
- on_accept_(std::move(callback)) {
- never_show_again_checkbox_->SetChecked(true);
- SetShowCloseButton(false);
- SetModalType(ui::MODAL_TYPE_SYSTEM);
- SetTitle(l10n_util::GetStringUTF16(IDS_ASH_TELEPORT_WARNING_TITLE));
- SetAcceptCallback(base::BindOnce(
- [](TeleportWarningDialog* dialog) {
- std::move(dialog->on_accept_)
- .Run(true, dialog->never_show_again_checkbox_->GetChecked());
- },
- base::Unretained(this)));
- SetCancelCallback(base::BindOnce(
- [](TeleportWarningDialog* dialog) {
- std::move(dialog->on_accept_).Run(false, false);
- },
- base::Unretained(this)));
- }
- TeleportWarningDialog::~TeleportWarningDialog() = default;
- // static
- void TeleportWarningDialog::Show(OnAcceptCallback callback) {
- TeleportWarningDialog* dialog_view =
- new TeleportWarningDialog(std::move(callback));
- dialog_view->InitDialog();
- views::DialogDelegate::CreateDialogWidget(
- dialog_view, Shell::GetRootWindowForNewWindows(), nullptr);
- views::Widget* widget = dialog_view->GetWidget();
- DCHECK(widget);
- widget->Show();
- }
- gfx::Size TeleportWarningDialog::CalculatePreferredSize() const {
- return gfx::Size(
- kDefaultWidth,
- GetLayoutManager()->GetPreferredHeightForWidth(this, kDefaultWidth));
- }
- void TeleportWarningDialog::InitDialog() {
- const views::LayoutProvider* provider = views::LayoutProvider::Get();
- SetBorder(views::CreateEmptyBorder(provider->GetDialogInsetsForContentType(
- views::DialogContentType::kText, views::DialogContentType::kControl)));
- SetLayoutManager(std::make_unique<views::BoxLayout>(
- views::BoxLayout::Orientation::kVertical, gfx::Insets(),
- provider->GetDistanceMetric(views::DISTANCE_UNRELATED_CONTROL_VERTICAL)));
- // Explanation string
- views::Label* label = new views::Label(
- l10n_util::GetStringUTF16(IDS_ASH_TELEPORT_WARNING_MESSAGE));
- label->SetMultiLine(true);
- label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- AddChildView(label);
- AddChildView(never_show_again_checkbox_);
- }
- } // namespace ash
|