/* ============================================================ * SPDX-License-Identifier: GPL-3.0-only * Copyright (C) 2023 aqua * ============================================================ */ #include "maindialog.hpp" #include "playlist.hpp" #include "playlistmodel.hpp" #include "ui_maindialog.h" #include #include #include MainDialog::MainDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MainDialog), m_playlist(new Playlist(this)), m_player{new QMediaPlayer(this)}, m_audioSink{new QAudioOutput(this)} { m_player->setAudioOutput(m_audioSink); m_audioSink->setVolume(50); ui->setupUi(this); ui->playlist->setModel(m_playlist->model()); connect(ui->fsSetRoot, &QPushButton::clicked, this, [this]() { const auto root = QFileDialog::getExistingDirectory(this, tr("Set Root"), QDir::homePath()); if (!root.isEmpty()) ui->fsView->setRootPath(root); }); connect(m_player, &QMediaPlayer::durationChanged, ui->progress, &QSlider::setMaximum); connect(m_player, &QMediaPlayer::positionChanged, ui->progress, &QSlider::setValue); connect(ui->fsView, &FSView::addLocalFile, m_playlist, &Playlist::appendUrl); connect(ui->open, &QPushButton::clicked, this, [this]() { const auto filelist = QFileDialog::getOpenFileUrls(this, tr("Open Files")); m_playlist->appendList(filelist); }); connect(ui->playlist, &QListView::activated, this, [this](const QModelIndex &index) { const auto url = m_playlist->model()->data(index, Qt::DisplayRole).toUrl(); m_player->setSource(url); m_player->play(); }); } MainDialog::~MainDialog() { delete ui; }