/* * Copyright (c) 2021, Cesar Torres * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "BarsVisualizationWidget.h" #include "Common.h" #include "PlaybackManager.h" #include "Player.h" #include #include #include #include class SoundPlayerWidgetAdvancedView final : public GUI::Widget , public Player { C_OBJECT(SoundPlayerWidgetAdvancedView) public: explicit SoundPlayerWidgetAdvancedView(GUI::Window& window, PlayerState& state); ~SoundPlayerWidgetAdvancedView() override; void open_file(StringView path) override; void read_playlist(StringView path); void play() override; void set_nonlinear_volume_slider(bool nonlinear); void set_playlist_visible(bool visible); void try_fill_missing_info(Vector& entries, StringView playlist_p); template void set_visualization() { m_visualization->remove_from_parent(); update(); auto new_visualization = T::construct(); m_player_view->insert_child_before(new_visualization, *static_cast(m_playback_progress_slider.ptr())); m_visualization = new_visualization; } private: void drop_event(GUI::DropEvent& event) override; GUI::Window& m_window; RefPtr m_splitter; RefPtr m_player_view; RefPtr m_playlist_widget; RefPtr m_visualization; RefPtr m_play_icon; RefPtr m_pause_icon; RefPtr m_stop_icon; RefPtr m_back_icon; RefPtr m_next_icon; RefPtr m_play_button; RefPtr m_stop_button; RefPtr m_back_button; RefPtr m_next_button; RefPtr m_playback_progress_slider; RefPtr m_volume_label; bool m_nonlinear_volume_slider; size_t m_device_sample_rate { 44100 }; };