/* * Copyright (c) 2021, Cesar Torres * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "M3UParser.h" #include #include #include #include enum class PlaylistModelCustomRole { _DONOTUSE = (int)GUI::ModelRole::Custom, FilePath }; class PlaylistModel : public GUI::Model { public: ~PlaylistModel() override = default; int row_count(const GUI::ModelIndex&) const override { return m_playlist_items.size(); } int column_count(const GUI::ModelIndex&) const override { return 6; } GUI::Variant data(const GUI::ModelIndex&, GUI::ModelRole) const override; void update() override; String column_name(int column) const override; Vector& items() { return m_playlist_items; } private: Vector m_playlist_items; static String format_filesize(u64 size_in_bytes); static String format_duration(u32 duration_in_seconds); }; class PlaylistTableView : public GUI::TableView { C_OBJECT(PlaylistTableView) public: void doubleclick_event(GUI::MouseEvent& event) override; Function&)> on_doubleclick; }; class PlaylistWidget : public GUI::Widget { C_OBJECT(PlaylistWidget) public: PlaylistWidget(); void set_data_model(RefPtr model) { m_table_view->set_model(model); m_table_view->update(); } protected: private: RefPtr m_table_view; };