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 /src/maindialog.cpp | |
download | nyamp-master.tar.xz |
Diffstat (limited to 'src/maindialog.cpp')
-rw-r--r-- | src/maindialog.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/maindialog.cpp b/src/maindialog.cpp new file mode 100644 index 0000000..ee6fdd7 --- /dev/null +++ b/src/maindialog.cpp @@ -0,0 +1,44 @@ +/* ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2023 aqua <aqua@iserlohn-fortress.net> + * ============================================================ */ + +#include "maindialog.hpp" +#include "playlist.hpp" +#include "playlistmodel.hpp" +#include "ui_maindialog.h" +#include <QAudioOutput> +#include <QFileDialog> +#include <QMediaPlayer> + +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; } |