summaryrefslogtreecommitdiff
path: root/playlist/playlist.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'playlist/playlist.hpp')
-rw-r--r--playlist/playlist.hpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/playlist/playlist.hpp b/playlist/playlist.hpp
new file mode 100644
index 0000000..4c9e385
--- /dev/null
+++ b/playlist/playlist.hpp
@@ -0,0 +1,39 @@
+/* ============================================================
+ * SPDX-License-Identifier: GPL-3.0-only
+ * Copyright (C) 2023 aqua <aqua@iserlohn-fortress.net>
+ * ============================================================ */
+
+#pragma once
+
+#include <QObject>
+#include <QUrl>
+
+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<QUrl> &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<QUrl> m_urls;
+ PlaylistModel *m_model;
+};