blob: 9c2d25400f93a2ff927af2b45bf9df87509dddc7 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_SHARE_AUDIO_VIEW_H_
#define CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_SHARE_AUDIO_VIEW_H_
#include <string_view>
#include "base/memory/raw_ptr.h"
#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/views/controls/button/toggle_button.h"
#include "ui/views/controls/label.h"
class ShareAudioView : public views::View {
METADATA_HEADER(ShareAudioView, views::View)
public:
ShareAudioView(const std::u16string& label_text,
bool audio_offered,
base::RepeatingCallback<void(void)> audio_check_callback);
ShareAudioView(const ShareAudioView&) = delete;
ShareAudioView& operator=(const ShareAudioView&) = delete;
~ShareAudioView() override;
bool AudioOffered() const;
bool IsAudioSharingApprovedByUser() const;
// This method must only be called if the class was created with
// audio_offered == true.
void SetAudioSharingApprovedByUser(bool is_on);
// Returns the text in the audio label if an audio label exists;
// returns the empty string otherwise.
std::u16string_view GetAudioLabelText() const;
private:
void OnAudioToggleButtonPressed();
base::RepeatingCallback<void(void)> audio_check_callback_;
raw_ptr<views::Label> audio_toggle_label_ = nullptr;
raw_ptr<views::ToggleButton> audio_toggle_button_ = nullptr;
};
#endif // CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_SHARE_AUDIO_VIEW_H_