blob: a458883ec2da5ab778abadef4f3d98b27c86789f [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/capture_mode/capture_mode_menu_toggle_button.h"
#include "ash/capture_mode/capture_mode_constants.h"
#include "ash/capture_mode/capture_mode_session_focus_cycler.h"
#include "ash/capture_mode/capture_mode_util.h"
#include "ash/style/ash_color_id.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
namespace ash {
namespace {
constexpr int kSpaceBetweenChildView = 16;
} // namespace
CaptureModeMenuToggleButton::CaptureModeMenuToggleButton(
const gfx::VectorIcon& icon,
const std::u16string& label_text,
bool enabled,
views::ToggleButton::PressedCallback callback)
: icon_view_(AddChildView(std::make_unique<views::ImageView>())),
label_view_(AddChildView(std::make_unique<views::Label>(label_text))),
toggle_button_(
AddChildView(std::make_unique<Switch>(std::move(callback)))) {
toggle_button_->SetAccessibleName(label_text);
CaptureModeSessionFocusCycler::HighlightHelper::Install(toggle_button_);
icon_view_->SetImageSize(capture_mode::kSettingsIconSize);
icon_view_->SetPreferredSize(capture_mode::kSettingsIconSize);
icon_view_->SetImage(
ui::ImageModel::FromVectorIcon(icon, kColorAshButtonIconColor));
toggle_button_->SetIsOn(enabled);
SetBorder(views::CreateEmptyBorder(capture_mode::kSettingsMenuBorderSize));
capture_mode_util::ConfigLabelView(label_view_);
auto* box_layout = capture_mode_util::CreateAndInitBoxLayoutForView(this);
box_layout->SetFlexForView(label_view_, 1);
box_layout->set_between_child_spacing(kSpaceBetweenChildView);
}
CaptureModeMenuToggleButton::~CaptureModeMenuToggleButton() = default;
void CaptureModeMenuToggleButton::OnThemeChanged() {
views::View::OnThemeChanged();
auto* color_provider = GetColorProvider();
toggle_button_->SetThumbOnColor(
color_provider->GetColor(kColorAshSwitchKnobColorActive));
toggle_button_->SetThumbOffColor(
color_provider->GetColor(kColorAshSwitchKnobColorInactive));
toggle_button_->SetTrackOnColor(
color_provider->GetColor(kColorAshSwitchTrackColorActive));
toggle_button_->SetTrackOffColor(
color_provider->GetColor(kColorAshSwitchTrackColorInactive));
}
BEGIN_METADATA(CaptureModeMenuToggleButton)
END_METADATA
} // namespace ash