/* ============================================================ * SPDX-License-Identifier: GPL-3.0-only * Copyright (C) 2023 aqua * ============================================================ */ #pragma once #include #include class PlaylistModel; class Playlist : public QObject { Q_OBJECT public: explicit Playlist(QObject *parent = nullptr); public slots: void appendUrl(const QUrl &url); public: void appendList(const QList &urllist) { for (const auto &url : urllist) appendUrl(url); } [[nodiscard]] QUrl operator[](const int index) const; [[nodiscard]] auto count() const { return m_urls.count(); } [[nodiscard]] auto model() { return m_model; } signals: void mediaAboutToBeInserted(int start, int end); void mediaInserted(); void mediaAboutToBeRemoved(int start, int end); void mediaRemoved(); private: QVector m_urls; PlaylistModel *m_model; };