diff options
author | aqua <aqua@iserlohn-fortress.net> | 2023-01-08 13:22:41 +0200 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2023-01-08 13:22:41 +0200 |
commit | 6d25c63f29103f53fc151de0f2dfa91fdb852093 (patch) | |
tree | f5fb9e8d4fbc854377d82e69a8c88d0814149b13 /playlist/playlist.cpp | |
download | nyamp-master.tar.xz |
Diffstat (limited to 'playlist/playlist.cpp')
-rw-r--r-- | playlist/playlist.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/playlist/playlist.cpp b/playlist/playlist.cpp new file mode 100644 index 0000000..778fae1 --- /dev/null +++ b/playlist/playlist.cpp @@ -0,0 +1,36 @@ +/* ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2023 aqua <aqua@iserlohn-fortress.net> + * ============================================================ */ + +#include "playlist.hpp" +#include "playlistmodel.hpp" +#include <QDir> +#include <QFileInfo> + +Playlist::Playlist(QObject *parent) : QObject{parent}, m_model(new PlaylistModel(this)) {} + +void Playlist::appendUrl(const QUrl &url) +{ + const QFileInfo info(url.toLocalFile()); + if (!info.exists()) return; // if file doesn't exist, return + + if (info.isFile()) { + emit mediaAboutToBeInserted(m_urls.count(), m_urls.count() + 1); + m_urls.append(url.toLocalFile()); + emit mediaInserted(); + } + else if (info.isFile()) { + QDir dir(info.absoluteFilePath()); + const auto list = dir.entryInfoList(QDir::Files); + emit mediaAboutToBeInserted(m_urls.count(), m_urls.count() + list.count()); + for (const auto &i : list) { m_urls.append(i.absoluteFilePath()); } + emit mediaInserted(); + } +} + +QUrl Playlist::operator[](const int index) const +{ + if (index < m_urls.count()) return m_urls.at(index); + return {}; +} |