blob: 7c42cde9a4a3a261080b6b514106ee162c234035 [file] [log] [blame]
// 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_CAPTURE_MODE_CAPTURE_MODE_TOGGLE_BUTTON_H_
#define ASH_CAPTURE_MODE_CAPTURE_MODE_TOGGLE_BUTTON_H_
#include "ash/ash_export.h"
#include "ash/capture_mode/capture_mode_session_focus_cycler.h"
#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/controls/button/image_button.h"
namespace gfx {
struct VectorIcon;
} // namespace gfx
namespace ash {
// A toggle button that will be used in the sub views of the CaptureBarView to
// toggle between image and video capture, and between fullscreen, window, and
// region capture sources.
class ASH_EXPORT CaptureModeToggleButton
: public views::ToggleImageButton,
public CaptureModeSessionFocusCycler::HighlightableView {
public:
METADATA_HEADER(CaptureModeToggleButton);
CaptureModeToggleButton(views::Button::PressedCallback callback,
const gfx::VectorIcon& icon);
CaptureModeToggleButton(const CaptureModeToggleButton&) = delete;
CaptureModeToggleButton& operator=(const CaptureModeToggleButton&) = delete;
~CaptureModeToggleButton() override = default;
void set_toggled_background_color(SkColor color) {
toggled_background_color_ = color;
}
// views::ToggleImageButton:
void OnPaintBackground(gfx::Canvas* canvas) override;
void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
// CaptureModeSessionFocusCycler::HighlightableView:
views::View* GetView() override;
private:
// Called by the constructor to set the icon in both normal and toggled
// states.
void SetIcon(const gfx::VectorIcon& icon);
// The color of the button background when the button is in a toggled state.
SkColor toggled_background_color_;
};
} // namespace ash
#endif // ASH_CAPTURE_MODE_CAPTURE_MODE_TOGGLE_BUTTON_H_