| // Copyright 2012 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "ui/views/examples/message_box_example.h" | |
| #include <memory> | |
| #include <utility> | |
| #include "base/strings/utf_string_conversions.h" | |
| #include "ui/base/l10n/l10n_util.h" | |
| #include "ui/views/controls/button/label_button.h" | |
| #include "ui/views/controls/message_box_view.h" | |
| #include "ui/views/examples/examples_window.h" | |
| #include "ui/views/examples/grit/views_examples_resources.h" | |
| #include "ui/views/layout/box_layout.h" | |
| #include "ui/views/layout/flex_layout.h" | |
| #include "ui/views/view.h" | |
| using l10n_util::GetStringUTF16; | |
| using l10n_util::GetStringUTF8; | |
| namespace views::examples { | |
| MessageBoxExample::MessageBoxExample() | |
| : ExampleBase(GetStringUTF8(IDS_MESSAGE_SELECT_LABEL).c_str()) {} | |
| MessageBoxExample::~MessageBoxExample() = default; | |
| void MessageBoxExample::CreateExampleView(View* container) { | |
| container->SetLayoutManager( | |
| std::make_unique<BoxLayout>(BoxLayout::Orientation::kVertical)); | |
| message_box_view_ = container->AddChildView(std::make_unique<MessageBoxView>( | |
| GetStringUTF16(IDS_MESSAGE_INTRO_LABEL))); | |
| message_box_view_->SetCheckBoxLabel( | |
| GetStringUTF16(IDS_MESSAGE_CHECK_BOX_LABEL)); | |
| View* button_panel = container->AddChildView(std::make_unique<View>()); | |
| button_panel->SetLayoutManager(std::make_unique<FlexLayout>()) | |
| ->SetOrientation(LayoutOrientation::kHorizontal) | |
| .SetMainAxisAlignment(LayoutAlignment::kStart); | |
| button_panel->AddChildView(std::make_unique<LabelButton>( | |
| base::BindRepeating(&MessageBoxExample::StatusButtonPressed, | |
| base::Unretained(this)), | |
| GetStringUTF16(IDS_MESSAGE_STATUS_LABEL))); | |
| button_panel->AddChildView(std::make_unique<LabelButton>( | |
| base::BindRepeating( | |
| [](MessageBoxView* message_box) { | |
| message_box->SetCheckBoxSelected( | |
| !message_box->IsCheckBoxSelected()); | |
| }, | |
| base::Unretained(message_box_view_)), | |
| GetStringUTF16(IDS_MESSAGE_TOGGLE_LABEL))); | |
| } | |
| void MessageBoxExample::StatusButtonPressed() { | |
| const bool selected = message_box_view_->IsCheckBoxSelected(); | |
| message_box_view_->SetCheckBoxLabel( | |
| GetStringUTF16(selected ? IDS_MESSAGE_ON_LABEL : IDS_MESSAGE_OFF_LABEL)); | |
| PrintStatus(GetStringUTF8(selected ? IDS_MESSAGE_CHECK_SELECTED_LABEL | |
| : IDS_MESSAGE_CHECK_NOT_SELECTED_LABEL)); | |
| } | |
| } // namespace views::examples |