/* * Copyright (c) 2021, Cesar Torres * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #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; };